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
EXPERTE
gefragt vor 5 Monaten36 Aufrufe
1 Antwort
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
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen