1

我正在尝试使用 Dynamicframe.toDF 将胶水动态帧转换为火花数据帧,但我遇到了这个异常

回溯(最后一次调用):文件“/tmp/ManualJOB”,第 62 行,在 df1 = datasource0.toDF() 文件“/opt/amazon/lib/python3.6/site-packages/awsglue/dynamicframe.py” ,第 147 行,在 toDF 中返回 DataFrame(self._jdf.toDF(self.glue_ctx._jvm.PythonUtils.toSeq(scala_options)), self.glue_ctx) 文件“/opt/amazon/spark/python/lib/py4j-0.10. 7-src.zip/py4j/java_gateway.py",第 1257 行,调用中 answer, self.gateway_client, self.target_id, self.name) File "/opt/amazon/spark/python/lib/pyspark.zip/pyspark/sql/utils.py", line 63, in deco return f(*a , **kw) 文件“/opt/amazon/spark/python/lib/py4j-0.10.7-src.zip/py4j/protocol.py”,第 328 行,get_return_value 格式(target_id,“.”,名称) , value) py4j.protocol.Py4JJavaError: 调用 o176.toDF 时出错。:org.apache.spark.SparkException:作业因阶段失败而中止:阶段 15.0 中的任务 1 失败 4 次,最近一次失败:阶段 15.0 中丢失任务 1.3(TID 198、172.31.0.175、执行程序 6):com.amazonaws .services.glue.util.FatalException:无法解析文件:手动绑定.csv

任何人都可以帮助我解决我所缺少的吗?

提前致谢!

4

1 回答 1

1

当存在非 UTF-8 编码的字符时会发生此问题。根据文档,Glue 仅支持 UTF-8 编码。

CSV 等基于文本的数据必须以 UTF-8 编码,AWS Glue 才能成功处理它。有关更多信息,请参阅 Wikipedia 中的 UTF-8。

您可以通过运行以下命令来验证您的文件是否包含无效字符,该命令将打印它们。这适用于 linux,如果您使用其他操作系统,您可以使用等效字符。

iconv -f UTF-8 your_file -o /dev/null; echo $?

要转换为 UTF-8,您可以将 CSV 传递给以下命令

iconv -f ISO-8859-1 -t UTF-8 file.csv > file-utf8.csv
于 2020-09-15T11:10:11.313 回答