这个官方文档建议有一个函数可以从 Glue Catalog 读取示例数据,即 create_dynamic_frame_from_catalog。
详细:create_dynamic_frame_from_catalog(database,table_name,redshift_tmp_dir,transformation_ctx =“”,push_down_predicate =“”,additional_options = {},catalog_id = None)
但是,当我尝试在代码中使用相同的内容时,它会出错。我尝试了以下两种方法:
选项 1(在 from_catalog 之前加点,就像我们在读取动态框架时通常所做的那样 -glueContext.create_dynamic_frame.from_catalog):
AWSGlueDataCatalog_node1698294792048 = glueContext.create_sample_dynamic_frame.from_catalog(database="abc",
table_name="def",
transformation_ctx="ijk", sample_options = {'maxSamplePartitions':2, 'maxSampleFilesPerPartition': 3}
)
错误消息:AttributeError:“GlueContext”对象没有属性“create_sample_dynamic_frame”
选项 2(全部包含下划线):
AWSGlueDataCatalog_node1698294792048 = glueContext.create_sample_dynamic_frame_from_catalog(database="abc",
table_name="def",
transformation_ctx="ijk", sample_options = {'maxSamplePartitions':2, 'maxSampleFilesPerPartition': 3}
)
错误消息:Py4JError:调用 o96.getSampleDynamicFrame 时发生错误。追踪:
该怎么办?我的目的是读取一个非常大的表的小样本来试验某些事情,而不需要在大量数据的不必要的处理上花费很多。请帮忙!
如果你仔细查看官方文档中的'create_sample_dynamic_frame_from_catalog'定义,你会看到三个必填参数:database、table_name、num。
您错过了“num”参数,这就是您收到上述错误消息的原因。
我能够使用以下代码创建示例动态框架:
df1 = glueContext.create_sample_dynamic_frame_from_catalog(
database="default",
table_name="test",
num = 100,
transformation_ctx="df1",
)
按照此操作,您将能够创建示例动态框架,并且可以节省处理完整数据的成本。 :)