查看 PySpark 脚本的 Glue 作业输出的最佳方式

Posted

技术标签:

【中文标题】查看 PySpark 脚本的 Glue 作业输出的最佳方式【英文标题】:Best Way to View Output of Glue Jobs for PySpark Scripts 【发布时间】:2020-09-23 05:52:00 【问题描述】:

所以我创建了一个调用 Python 脚本并进行 PySpark 转换的作业。但是,当我从 AWS Cloudwatch 查看Output 时,输出中有很多对我来说并不重要的信息。例如:

at org.apache.spark.rdd.NewHadoopRDD$$anon$1.liftedTree1$1(NewHadoopRDD.scala:199)
at org.apache.spark.rdd.NewHadoopRDD$$anon$1.<init>(NewHadoopRDD.scala:196)
at org.apache.spark.rdd.NewHadoopRDD.compute(NewHadoopRDD.scala:151)
at org.apache.spark.rdd.NewHadoopRDD.compute(NewHadoopRDD.scala:70)
at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:324)
at org.apache.spark.rdd.RDD.iterator(RDD.scala:288)
at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)
at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:324)
at org.apache.spark.rdd.RDD.iterator(RDD.scala:288)
at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)
at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:324)
at org.apache.spark.rdd.RDD.iterator(RDD.scala:288)
at org.apache.spark.rdd.UnionRDD.compute(UnionRDD.scala:105)
at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:324)
at org.apache.spark.rdd.RDD.iterator(RDD.scala:288)
at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)
at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:324)
at org.apache.spark.rdd.RDD.iterator(RDD.scala:288)
at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)
at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:324)
at org.apache.spark.rdd.RDD.iterator(RDD.scala:288)
at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)
at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:324)
at org.apache.spark.rdd.RDD.iterator(RDD.scala:288)
at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)
at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:324)
at org.apache.spark.rdd.RDD.iterator(RDD.scala:288)
at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)
at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:324)
at org.apache.spark.rdd.RDD.iterator(RDD.scala:288)

有没有办法将 Glue 作业配置为仅输出到日志语句,例如来自我设置的 print() 或仅由于错误或异常?

【问题讨论】:

您是否尝试过启用连续记录 docs.aws.amazon.com/glue/latest/dg/… 并使用自定义脚本记录器记录特定于应用程序的消息? 这是启用Continuous Logging 的结果。现在我想过滤这些日志结果以便于调试。 【参考方案1】:

AWS 最近发布了 Glue for V2.0 的更新。这个版本改变了日志的排序/分组方式,现在我只想查看的日志(例如来自 print())现在放在一个地方,我可以在 AWS Cloudwatch 中轻松查看。

所以解决方案是更新您的 Glue 作业以使用 Glue 2.0。

【讨论】:

以上是关于查看 PySpark 脚本的 Glue 作业输出的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章

从aws glue pyspark作业中的s3加载JSON

AWS Glue PySpark 替换 NULL

在运行 AWS Glue ETL 作业并命名输出文件名时,有没有办法从 S3 存储桶中读取文件名。 pyspark 是不是提供了一种方法来做到这一点?

Glue PySpark 作业:调用 o100.pyWriteDynamicFrame 时出错

Python/Pyspark 迭代代码(用于 AWS Glue ETL 作业)

如何从aws glue pyspark作业中的嵌套数组中提取数据