无法将AWS Glue动态框架转换为Spark数据框架

时间:2020-09-15 07:44:31

标签: python apache-spark pyspark aws-glue aws-glue-spark

我正在尝试使用Dynamicframe.toDF将胶粘动态框架转换为spark数据框架,但出现此异常

回溯(最近一次通话最近):文件“ / 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行,在致电中 答案,self.gateway_client,self.target_id,self.name)文件“ /opt/amazon/spark/python/lib/pyspark.zip/pyspark/sql/utils.py”,行 63,在装饰 返回f(* a,** kw)文件“ /opt/amazon/spark/python/lib/py4j-0.10.7-src.zip/py4j/protocol.py”, 第328行,位于get_return_value中 格式(target_id,“。”,名称),值)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:无法解析文件:Manual Bound.csv

有人可以帮我解决我所缺少的吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

当存在非UTF-8编码的字符时会发生此问题。根据this文档,胶水仅支持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