使用 pyspark aws 胶水时显示 DataFrame
Posted
技术标签:
【中文标题】使用 pyspark aws 胶水时显示 DataFrame【英文标题】:display DataFrame when using pyspark aws glue 【发布时间】:2019-12-24 16:52:29 【问题描述】:如何使用 aws 胶水的作业 etl 显示 DataFrame?
我在下面尝试了这段代码,但没有显示任何内容。
df.show()
代码
datasource0 = glueContext.create_dynamic_frame.from_catalog(database = "flux-test", table_name = "tab1", transformation_ctx = "datasource0")
sourcedf = ApplyMapping.apply(frame = datasource0, mappings = [("id", "long", "id", "long"),("Rd.Id_Releve", "string", "Rd.Id_R", "string")])
sourcedf = sourcedf.toDF()
data = []
schema = StructType(
[
StructField('PM',
StructType([
StructField('Pf', StringType(),True),
StructField('Rd', StringType(),True)
])
),
])
cibledf = sqlCtx.createDataFrame(data, schema)
cibledf = sqlCtx.createDataFrame(sourcedf.rdd.map(lambda x: Row(PM=Row(Pf=str(x.id_prm), Rd=None ))), schema)
print(cibledf.show())
job.commit()
【问题讨论】:
您检查过 cloudwatch 日志吗? 您能否验证您的源是否有数据。在转换为数据框之前尝试打印动态帧内容。 @Yuva 是的,我试过了.. 你能告诉我 df 必须显示在哪里吗?界面?谢谢 @Yuva 也许我需要在我的工作 etl 中删除 job.commit? 【参考方案1】:在胶水控制台中,运行胶水作业后,在作业列表中会有一个日志/错误日志列。
单击日志,这将带您进入与您的工作相关的 cloudwatch 日志。浏览打印语句。
也请在这里查看:Convert dynamic frame to a dataframe and do show()
添加了工作/测试代码示例
代码示例:
zipcode_dynamicframe = glueContext.create_dynamic_frame.from_catalog(
database = "customer_db",
table_name = "zipcode_master")
zipcode_dynamicframe.printSchema()
zipcode_dynamicframe.toDF().show(10)
cloudwatch 日志中 zipcode_dynamicframe.show() 的屏幕截图:
【讨论】:
我完全按照你说的做了。在日志中没有找到数据框。谢谢 添加了代码sn-p和来自云观察日志的截图……日志默认是折叠的,你已经展开并注意你的df.show()。以上是关于使用 pyspark aws 胶水时显示 DataFrame的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 pyspark 从 aws 胶水的时间戳中提取年份
如何使用 pyspark 在 aws 胶水中展平嵌套 json 中的数组?