Glue PySpark 作业:调用 o100.pyWriteDynamicFrame 时出错
Posted
技术标签:
【中文标题】Glue PySpark 作业:调用 o100.pyWriteDynamicFrame 时出错【英文标题】:Glue PySpark Job: An error occurred while calling o100.pyWriteDynamicFrame 【发布时间】:2021-07-06 12:08:19 【问题描述】:我正在构建数据管道,通过在 AWS Glue 中创建自定义连接器,通过 AWS Glue 将数据从 S3 存储桶迁移到 Snowflake。
运行胶水作业时出现以下错误:
**An error occurred while calling o100.pyWriteDynamicFrame. Glue ETL Marketplace: JDBC Data Sink: Column "serial_number" not found in schema Some(StructType(StructField(SERIAL_NUMBER,DoubleType,true), StructField(COMPANY_NAME,StringType,true), StructField(EMPLOYEE_MARKME,StringType,true), StructField(DESCRIPTION,StringType,true), StructField(LEAVE,LongType,true)))**
注意:连接器和驱动程序分别使用以下版本-
-
Snowflake Spark 连接器 - spark-snowflake_2.11-2.4.14-spark_2.3.jar
Snowflake JDBC 驱动程序 - snowflake-jdbc-3.8.3.jar
与 Glue 位于同一区域的 S3 存储桶。
如果我遗漏了什么或者我使用了不正确的版本/不支持的连接器和驱动程序版本,请告诉我......
【问题讨论】:
检查序列号列 【参考方案1】:您是否在双引号中传递列?如果是,那可能是根本原因。 Snowflake 将所有名称隐式转换为大写,除非您在双引号中指定它并且它也可以反过来工作(如果您有一个名为 SERIAL_NUMBER 的列名并且您在查询中选择“serial_number”,它将无法找到列。
【讨论】:
我在映射时通过了大写的 column_names 并且它起作用了。感谢您的建议。以上是关于Glue PySpark 作业:调用 o100.pyWriteDynamicFrame 时出错的主要内容,如果未能解决你的问题,请参考以下文章
Python/Pyspark 迭代代码(用于 AWS Glue ETL 作业)
AWS Glue 作业失败:调用 o71.getDynamicFrame..SdkClientException 时发生错误:无法执行 HTTP 请求:Connect .s3..connect 超时