我有一个用 Python 编写的 AWS Glue 作业,它引入了 spark-xml 库(通过 Dependent jars 路径)。我正在使用 spark-xml_2.11-0.2.0.jar。当我尝试将我的 DataFrame 输出到 XML 时,出现错误。我正在使用的代码是:
applymapping1.toDF().repartition(1).write.format("com.databricks.xml").save("s3://glue.xml.output/Test.xml");
我得到的错误是:
"/mnt/yarn/usercache/root/appcache/application_1517883778506_0016/container_1517883778506_0016_02_000001/pyspark.zip/pyspark/sql/readwriter.py", line 550, in save File "/mnt/yarn/usercache/root/appcache/application_1517883778506_0016/container_1517883778506_0016_02_000001 /py4j-0.10.4-src.zip/py4j/java_gateway.py”,第 1133 行,通话中文件“/mnt/yarn/usercache/root/appcache/application_1517883778506_0016/container_1517883778506_0016_02_000001/pyspark.zip/pyspark/sql/utils.py”,第 63 行,在 deco 文件“/mnt/yarn/usercache/root/appcache/application_1517883778”中container_1517883778506_0016_02_000001/py4j-0.10.4-src.zip/py4j/protocol.py”,第 319 行,在 get_return_value py4j.protocol.Py4JJavaError:调用 o75.save 时出错。: java.lang.AbstractMethodError: com.databricks.spark.xml.DefaultSource15.createRelation(Lorg/apache/spark/sql/SQLContext;Lorg/apache/spark/sql/SaveMode;Lscala/collection/immutable/Map;Lorg/apache /spark/sql/Dataset;)Lorg/apache/spark/sql/sources/BaseRelation; 在 org.apache.spark.sql.execution.datasources.DataSource.write(DataSource.scala:426) 在 org.apache.spark.sql.DataFrameWriter.save(DataFrameWriter.
如果我将其更改为 CSV,它可以正常工作:
applymapping1.toDF().repartition(1).write.format("com.databricks.csv").save("s3://glue.xml.output/Test.xml");
注意:使用 CSV 时,我不必导入 spark-xml。我认为 spark-csv 包含在 AWS Glue 的 Spark 环境中。
有什么建议可以尝试吗?
我尝试了各种版本的 spark-xml:
spark-xml_2.11-0.2.0 spark-xml_2.11-0.3.1 spark-xml_2.10-0.2.0