使用 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 日志中 z​​ipcode_dynamicframe.show() 的屏幕截图:

【讨论】:

我完全按照你说的做了。在日志中没有找到数据框。谢谢 添加了代码sn-p和来自云观察日志的截图……日志默认是折叠的,你已经展开并注意你的df.show()。

以上是关于使用 pyspark aws 胶水时显示 DataFrame的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 pyspark 从 aws 胶水的时间戳中提取年份

如何使用 pyspark 在 aws 胶水中展平嵌套 json 中的数组?

aws 胶水 pyspark 删除数组中的结构,但保留数据并保存到 dynamodb

将胶水pyspark错误写入文本文件

为啥我的 aws 胶水作业只使用一个执行器和驱动程序?

我可以使用 aws 胶水在 sql server 中创建表/写入表吗?