我有通过胶水爬行器爬行的 CSV 数据,最终出现在一张表中。
我正在尝试运行 ETL 作业,将磁盘上的数据重新分区到日期列的某些组件中。然后将 CSV 转换为 parquet。
即我的数据中有一个名为“date”的列,并且想要将数据分区为 s3 上的年、月、日分区。
我能够转换为 parquet 并使其在序列号值(不同的列)上正确分区,但它会将值“__HIVE_DEFAULT_PARTITION__”放入日期相关分区的所有值年、月和日中。
我可以对其他列(例如序列号)进行分区,但年/月/日不在原始数据集中,因此我的方法是从日期列创建值作为数据中的新列设置并告诉 write_dynamic_frame 函数按列分区,但这不起作用。
一般来说,我对 Spark/pyspark 和glue 很陌生,所以我很可能错过了一些简单的东西。
感谢任何提供帮助的人。
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.sql import functions as F
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.dynamicframe import DynamicFrame
from awsglue.job import Job
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)
datasource0 = glueContext.create_dynamic_frame.from_catalog(database = "my_database", table_name = …Run Code Online (Sandbox Code Playgroud)