pyWriteDynamicFrame:无法识别的方案空;预期 s3、s3n 或 s3a [胶水到 Redshift]

Posted

技术标签:

【中文标题】pyWriteDynamicFrame:无法识别的方案空;预期 s3、s3n 或 s3a [胶水到 Redshift]【英文标题】:pyWriteDynamicFrame: Unrecognized scheme null; expected s3, s3n, or s3a [Glue to Redshift] 【发布时间】:2019-10-30 10:37:55 【问题描述】:

在执行 Glue 作业时,在进行必要的转换后,我将 Spark df 的结果写入 Redshift 表,如下所示:

dynamic_df = DynamicFrame.fromDF(df, glue_context, "dynamic_df")

glue_context.write_dynamic_frame.from_jdbc_conf(
    frame=dynamic_df, catalog_connection=args['catalog_connection'],
    connection_options="dbtable": args['dbschema'] + "." + args['dbtable'], "database": args['database'],
    transformation_ctx="write_my_df")

但是我收到了这个异常:

19/08/23 14:29:31 ERROR __main__: Traceback (most recent call last):
File "/mnt/yarn/usercache/root/appcache/application_1572375324962_0001/container_1572375324962_0001_01_000001/pyspark.zip/pyspark/sql/utils.py", line 63, in deco
return f(*a, **kw)
File "/mnt/yarn/usercache/root/appcache/application_1572375324962_0001/container_1572375324962_0001_01_000001/py4j-0.10.7-src.zip/py4j/protocol.py", line 328, in get_return_value
format(target_id, ".", name), value)
py4j.protocol.Py4JJavaError: An error occurred while calling o190.pyWriteDynamicFrame.
: java.lang.IllegalArgumentException: Unrecognized scheme null; expected s3, s3n, or s3a

我做错了什么?我该如何解决?

【问题讨论】:

【参考方案1】:

documentation 中报告的函数from_jdbc_conf 中缺少参数redshift_tmp_dir

所以现在的功能是:

glue_context.write_dynamic_frame.from_jdbc_conf(
    frame=dynamic_df, catalog_connection=args['catalog_connection'],
    connection_options="dbtable": args['dbschema'] + "." + args['dbtable'], "database": args['database'],
    redshift_tmp_dir="s3://my_bucket/my/location/", transformation_ctx="write_my_df")

【讨论】:

您提供的文档链接指出“redshift_tmp_dir – 要使用的 Amazon Redshift 临时目录(可选)。”那么缺少一个可选参数是如何造成麻烦的呢? @user1113782 我只陈述了行为,不知道原因。除了它是在大约 2 年前发布的之外,可能是从那时起该问题已得到修复并使该参数成为可选参数。如果您收到此错误消息,请尝试使用此解决方案

以上是关于pyWriteDynamicFrame:无法识别的方案空;预期 s3、s3n 或 s3a [胶水到 Redshift]的主要内容,如果未能解决你的问题,请参考以下文章

用ACCESS数据库提示 无法识别的数据库格式

Python argparse 忽略无法识别的参数

php 无法识别的自定义帖子类型的帖子配额。一些旧主题注册Pro Sites无法识别的帖子类型,这可以用于限制

使用 MyAppDelegate 时无法识别的选择器

NSMutableArray addObject,无法识别的选择器

UITableViewController 无法识别的选择器发送到实例