AWS Glue 动态框架 - 如果没有数据则没有列标题

kar*_*art 6 amazon-web-services pyspark aws-glue aws-glue-data-catalog

我阅读了 Glue 目录表,将其转换为数据帧并使用下面的内容打印模式(使用 Python 的 Spark)

dyf = glueContext.create_dynamic_frame.from_catalog(database='database_name',
                                                        table_name='table_name',
                                                        redshift_tmp_dir=args['TempDir'])
df = dyf.toDF()
df.printschema()
Run Code Online (Sandbox Code Playgroud)

当表有数据时它工作正常。
但是,如果表为空,它不会打印架构(它无法获取空表的架构)。结果,未来的连接失败。
有没有办法克服这个问题,并使动态框架从目录中获取表模式,即使对于空表或任何其他替代方案也是如此?

AHo*_*and -1

我找到了解决方案。它并不理想,但它有效。如果您在 DynamicFrame 上调用 apply_mapping() ,它将保留 DataFrame 中的架构。例如,如果您的表有列last_name,您可以执行以下操作:

dyf = glueContext.create_dynamic_frame.from_catalog(database='database_name',
                                                        table_name='table_name',
                                                        
df = dyf.apply_mapping([
  ("last_name", "string", "last_name", "string")
])toDF()
df.printschema()
Run Code Online (Sandbox Code Playgroud)