create_dynamic_frame_from_catalog返回零结果

时间:2018-11-04 03:09:07

标签: pyspark amazon-athena aws-glue

我正在尝试从雅典娜表创建动态胶粘数据框,但是我一直得到一个空的数据框。

  • 雅典娜表是我的胶水数据目录的一部分

  • create_dynamic_frame_method调用不会引发任何错误。我尝试加载随机表,但它确实抱怨了健全性检查。

  • 我知道Athena表中有数据,因为使用Athena查询完全相同的表会返回结果

  • 表是s3上的外部json分区表

我正在使用pyspark,如下所示:

import sys
from pyspark.context import SparkContext
from awsglue.context import GlueContext

# Create a Glue context
glueContext = GlueContext(SparkContext.getOrCreate())

# Create a DynamicFrame using the 'raw_data' table
raw_data_df = 
glueContext.create_dynamic_frame.from_catalog(database="***", 
table_name="raw_***")

 # Print out information about this data, im getting zero here
 print "Count:  ", raw_data_df.count()

#also getting nothing here
raw_data_df.printSchema() 

有人面临同样的问题吗?因为没有引发错误,这可能是权限问题还是胶水错误?

2 个答案:

答案 0 :(得分:0)

在Glue中有一些记录较差的功能/陷阱有时令人沮丧。

我建议调查您的胶水作业的以下配置:

  1. S3存储桶名称是否具有aws-glue- *前缀?
  2. 将文件放在S3文件夹中,并确保搜寻器表定义在文件夹中 而不是实际文件。

如果有帮助,我还在LinkedIn上写了一篇有关其他胶水陷阱的博客。

答案 1 :(得分:0)

雅典娜表指向的路径下是否有子文件夹? glueContext.create_dynamic_frame.from_catalog不会递归读取数据。将数据放在表指向的根目录中,或者将additional_options = {"recurse": True}添加到您的from_catalog调用中。

信用:https://stackoverflow.com/a/56873939/5112418