【以下的问题经过翻译处理】 我已经使用了通过getResolvedOptions
函数检索的临时路径,作为relationlize
函数的“staging_path”。
发现作业有时会失败 - 这意味着不规则 - 因为作业在执行关系化函数后无法检索分段的表。
为了更好地理解,请在下面添加一些说明和代码。
如果有任何建议,请告知我,并请确认我们可以继续使用由getResolvedOptions
函数获取的参数。
[代码1]
getResolvedOptions(sys.argv, [..., "TempDir", ...])
...
# the name of the target field to be relationalized is "params"
flatten_dyc = dyc["post_log"].relationalize(
root_table_name = 'root',
staging_path = args["TempDir"],
transformation_ctx = 'flatten_dyc'
)
flatten_dyc["root"].printSchema()
flatten_dyc["root_params"].printSchema()
今天早上,我运行它并得到了以下结果。
image
flatten_dyc["root_params"]
为空,尽管它至少应该有id
字段,以与flatten_dyc["root"]
表连接。
[代码2]
因此,我使用硬编码的staging_path
(请参阅下文)尝试了相同的脚本,并发现作业可以成功读取分段表 -flatten_dyc["root"]
-的所有字段。
...
flatten_dyc = dyc["post_log"].relationalize(
root_table_name = 'root',
staging_path = "s3://temp-glue-info/"
transformation_ctx = 'flatten_dyc'
)
flatten_dyc["root"].printSchema()
flatten_dyc["root_params"].printSchema()
我的问题是:
1/ 当路径被软编码时,为什么函数无法正确读取暂存表?
2/此外,当我再次运行[Code1]时,flatten_dyc[“root_params”]已成功读取。 表示该功能不可靠。 为什么吗?