AWS Glue Job 3.0 无法解析CSV文件。

0

【以下的问题经过翻译处理】 你好,我正在运行一个Glue Job,在 S3 上的一个以分号分隔的 CSV 文件上应用 ETL。然而,当我使用 AWS 的 DynamicFrame 功能读取文件并尝试使用 printSchema 或 toDF 等方法时,出现以下错误:

py4j.protocol.Py4JJavaError: An error occurred while calling o77.schema. : org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 1.0 failed 1 times, most recent failure: Lost task 0.0 in stage 1.0 (TID 1) (52bff5da55da executor driver): com.amazonaws.services.glue.util.FatalException: Unable to parse file: s3://my-bucket/my-file.csv

我已经验证了编码是 UTF-8的,所以不应该有问题。当我使用 spark.read.csv 读取 CSV 文件时,它可以正常工作,并且 Crawlers 也可以识别到模式。数据中有一些不应该存在的特殊字符,这是我想要执行的 ETL 的一部分。无论是在本地的 Docker 上运行作业还是在 Glue Studio 上运行作业,使用 AWS Glue 的 from_catalog 或 from_options 函数都不起作用,问题是相同的。我的数据有一个按日期分区的文件夹,所以我更希望避免直接使用 Spark 读取数据,并充分利用 Glue Data Catalog。

提前感谢。

profile picture
专家
已提问 5 个月前33 查看次数
1 回答
0

【以下的回答经过翻译处理】 你好,

当 CSV 文件的编码不是 "UTF-8" 或者包含非 UTF-8 编码字符时,就会出现 "Fatal exception com.amazonaws.services.glue.readers 无法解析文件 *.csv" 的错误。

由于你已经验证了你的 CSV 文件是 UTF-8 编码,并且你提到数据中有一些特殊字符,请尝试在文件中删除这些字符后再运行 ETL 作业。

在我的个人 AWS 账户上,我使用分号分隔的 CSV 文件进行了测试,成功运行了 Glue ETL 作业,并使用了 from_catalog 函数。 以下是我进行此测试的步骤:

  1. 创建一个示例的分号分隔的 CSV 文件。
  2. 使用 Glue Crawler 从该文件创建表。
  3. 创建一个 Glue ETL 作业,使用 from_catalog 函数读取该表。

希望对你有帮助。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则