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 时出错的主要内容,如果未能解决你的问题,请参考以下文章

需要从 AWS GLUE 作业调用存储过程

AWS Glue ETL 作业中的 Boto3 Glue

Python/Pyspark 迭代代码(用于 AWS Glue ETL 作业)

AWS Glue 作业失败:调用 o71.getDynamicFrame..SdkClientException 时发生错误:无法执行 HTTP 请求:Connect .s3..connect 超时

如何从aws glue pyspark作业中的嵌套数组中提取数据

从aws glue pyspark作业中的s3加载JSON