Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pyspark 从返回零结果的目录创建动态框架_Pyspark_Amazon Athena_Aws Glue - Fatal编程技术网

Pyspark 从返回零结果的目录创建动态框架

Pyspark 从返回零结果的目录创建动态框架,pyspark,amazon-athena,aws-glue,Pyspark,Amazon Athena,Aws Glue,我试图从athena表创建一个动态粘合数据帧,但我一直得到一个空的数据帧 雅典娜表是我的glue数据目录的一部分 create\u dynamic\u frame\u方法调用不会引发任何错误。我试着加载一个随机表,但它只是作为一个理智的检查 我知道Athena表有数据,因为使用Athena查询完全相同的表会返回结果 该表是s3上的一个外部json分区表 我正在使用pyspark,如下所示: import sys from pyspark.context import SparkContext

我试图从athena表创建一个动态粘合数据帧,但我一直得到一个空的数据帧

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

  • create\u dynamic\u frame\u方法
    调用不会引发任何错误。我试着加载一个随机表,但它只是作为一个理智的检查

  • 我知道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() 

有人面临同样的问题吗?由于没有出现错误,这可能是权限问题还是胶水错误?

胶水中有几个记录不清的特性/缺陷,有时令人沮丧

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

  • S3 bucket名称是否有aws glue-*前缀
  • 将文件放在S3文件夹中,并确保爬虫表定义位于S3文件夹中 而不是实际的文件

  • 我还写了一篇关于其他胶水陷阱的博客,如果有帮助的话

    雅典娜表指向的路径下是否有子文件夹<代码>glueContext。创建动态框架。从目录不递归读取数据。要么将数据放在表指向的根目录中,要么将
    附加的\u选项={“recurse”:True}
    添加到
    from\u catalog
    调用中


    信用证:

    谢谢@Tanveer的回答。不幸的是,这两个建议对我都适用。我的表不是使用胶水爬虫创建的,而是使用直接向上的DDL。我通过手动添加分区来维护分区,因为抓取数据需要1-2个小时,而如果我想按需抓取,则需要接近实时的时间。谢谢分享你的博客!如果你有进一步的建议,请告诉我。嗨,法迪,上面的两个建议怎么样?你试过/检查过吗?我建议您创建一个bucket,例如aws glue test,创建一个文件夹,将一个小文件移到那里,在文件夹顶部创建DDL,然后运行glue job,看看是否有效。