特定のテキスト コンテンツに対してクライアント側の暗号化を実行し、s3 の個々のファイルに保存します。これらのファイルを読み取り、AWS Glue でコンテンツを処理しようとしています。コンテンツを読み取ることはできますが、復号化中にピッキング エラーが発生します。
import sys
import json
import boto3
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
import base64
session = boto3.session.Session()
kms = session.client('kms')
def s3Decrypt(decoded):
decoded = base64.b64decode(decoded)
meta = kms.decrypt(CiphertextBlob=decoded)
plaintext = meta[u'Plaintext']
return plaintext.decode()
def map_function(v):
value = v[1]
return s3Decrypt(value)
## @params: [JOB_NAME]
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)
spark_rdd = sc.wholeTextFiles("s3://xxxxx/yyyy/zzzzz/*").map(lambda x : decrypt(x))
print(spark_rdd.collect())
job.commit()
これは私たちが得るエラーです:
TypeError: can't pickle SSLContext objects
Traceback (most recent call last):
File "/opt/amazon/spark/python/lib/pyspark.zip/pyspark/serializers.py", line 590, in dumps return cloudpickle.dumps(obj, 2)
これを達成する方法はありますか?