【问题标题】:Creating dynamic frame issue without the pushdown predicate创建没有下推谓词的动态框架问题
【发布时间】:2021-09-14 01:15:54
【问题描述】:

AWS 胶水新手,请原谅我的问题: 为什么在创建动态框架时不包含下推谓词时会出现错误。我尝试在不使用谓词的情况下使用它,因为我将使用书签,因此无论日期分区如何,都只会处理新文件。

datasourceDyF = gluecontext.create_dynamic_frame.from_catalog(database=db_name, table_name= table1 ,transformation_ctx = "datasourceDyF")
datasourceDyF.ToDF().show(20)

datasourceDyF = gluecontext.create_dynamic_frame.from_catalog(database=db_name, table_name= table1,transformation_ctx = "datasourceDyF", push_down_predicate = "salesdate = '2020-01-01'")
datasourceDyF.ToDF().show(20)

代码 1 给出了这个错误:

py4j.protocol.Py4JJavaError: An error occurred while calling o76.showString.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 1.0 failed 4 times,
 most recent failure: Lost task 0.3 in stage 1.0 (TID 4, xxx.xx.xxx.xx, executor 5):
java.lang.UnsupportedOperationException: org.apache.parquet.column.values.dictionary.PlainValuesDictionary$PlainLongDictionary

【问题讨论】:

    标签: apache-spark pyspark apache-spark-sql aws-glue aws-glue-spark


    【解决方案1】:

    下推谓词

    在连接 RDBMS / 表时实际上很好用,这有助于 spark 识别要加载到其 RAM / 内存中的数据(即加载下游系统不需要的数据是没有意义的)。使用它的好处 - 由于更少的数据执行以比全表加载更快的方式发生。

    现在,在您的情况下,您的底层表可能是分区表,因此需要下推谓词。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      • 1970-01-01
      • 2016-05-06
      • 1970-01-01
      相关资源
      最近更新 更多