aws glue:获取分区最有效的方法是什么

cfh9epnr  于 2021-07-14  发布在  Spark
关注(0)|答案(0)|浏览(231)

我们有一个分区胶表: table_name 在粘合数据库中: source . 它是由 year 以及 month . 支持此表的数据位于 S3 是吗 crawled 通过 Glue Crawler .
我正在研究获取分区的各种方法的性能:


# Option 1

df = glueContext.create_dynamic_frame.from_catalog(
                                    database=source, 
                                    table_name=table_name, 
                                    push_down_predicate='year=2020 and month=01')


# Option 2

df = glueContext.create_dynamic_frame.from_catalog(
                                    database=source, 
                                    table_name=table_name)
df_filtered = Filter.apply(frame=df, f=lambda x:x[item['year']] == '2020'] && 
                                                x[item['month']] == '01' ])


# Option 3

df = glueContext.create_dynamic_frame.from_catalog(
                                      database=source,         
                                      table_name=table_name)
dataFrame = df.toDF()
dataFrame = dataFrame.filter( ( col(item['year']) == '2020' ) )
                     .filter( ( col(item['month']) == '01' ) )

我怀疑选项1和选项3将具有良好的优化性能,因为glue能够确定我正在尝试访问一个分区,并且可以通过转到正确的s3路径来快速检索该分区。
我怀疑选项2本质上是一个扫描。我不知道glue如何确定filter lambda函数的内容,如何优化以确定我感兴趣的分区并快速获取正确的分区。
由于复杂的原因,我实际上无法运行代码并分析它。因此,理论上的思考在这里是值得赞赏的。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题