【发布时间】:2017-08-21 04:31:48
【问题描述】:
我是 PySpark 环境的新手,在尝试使用加密模块加密 RDD 中的数据时遇到错误。代码如下:
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('encrypt').getOrCreate()
df = spark.read.csv('test.csv', inferSchema = True, header = True)
df.show()
df.printSchema()
from cryptography.fernet import Fernet
key = Fernet.generate_key()
f = Fernet(key)
dfRDD = df.rdd
print(dfRDD)
mappedRDD = dfRDD.map(lambda value: (value[0], str(f.encrypt(str.encode(value[1]))), value[2] * 100))
data = mappedRDD.toDF()
data.show()
在我尝试将value[1] 与str(f.encrypt(str.encode(value[1]))) 映射之前,一切正常。我收到以下错误:
PicklingError: Could not serialize object: TypeError: can't pickle CompiledFFI objects
我没有看到太多资源提到这个错误,我想看看其他人是否遇到过它(或者如果通过 PySpark,你有推荐的列加密方法)。
【问题讨论】:
-
我想补充一点,我正在使用 2017 年更新的 Mac、Jupyter Notebook 和通过 Homebrew 下载的本地 PySpark...
标签: python apache-spark pyspark pickle