私は寄木細工のフォーマットに書くことができ、次のように列で分割されます:
jobname = args['JOB_NAME']
#header is a spark DataFrame
header.repartition(1).write.parquet('s3://bucket/aws-glue/{}/header/'.format(jobname), 'append', partitionBy='date')
しかし、GlueのDynamicFrameではこれを行うことができません。
header_tmp = DynamicFrame.fromDF(header, glueContext, "header")
glueContext.write_dynamic_frame.from_options(frame = header_tmp, connection_type = "s3", connection_options = {"path": 's3://bucket/output/header/'}, format = "parquet")
AWSのドキュメントによると寄木細工の接着剤はフォーマットオプションをサポートしていないとのことなので、connection_options
dictの一部としてpartitionBy
を渡そうとしましたが、それは機能しませんでした。
これは可能ですか、そしてどのように?このようにする理由としては、現在は機能していないので、ジョブのブックマークが機能する必要があると思いました。
AWSサポートから(少し言い換えると):
現在のところ、寄木細工の床に書き込む場合、GlueはpartitionByパラメーターをサポートしていません。ただし、これは作業中です。
Glue APIを使用して寄木細工に書き込むことは、ジョブのブックマーク機能がS3ソースで機能するために必須です。
そのため、今日の時点では、寄木細工のファイルを分割することはできません[〜#〜]および[〜#〜]ジョブのブックマーク機能を有効にします。
編集:今日(3/23/18)私は ドキュメント で見つけました:
glue_context.write_dynamic_frame.from_options(
frame = projectedEvents,
connection_options = {"path": "$outpath", "partitionKeys": ["type"]},
format = "parquet")
そのオプションは常に存在し、私とAWSサポート担当者の両方がそれを見逃したか、最近追加されたばかりである可能性があります。いずれにせよ、今は可能のようです。
データフレームのいくつかの列をpartionkeysオブジェクトとして使用します。
glueContext.write_dynamic_frame \
.from_options(
frame = some_dynamic_dataframe,
connection_type = "s3",
connection_options = {"path":"some_path", "partitionKeys": ["month", "day"]},
format = "parquet")