Spark-xml Поколение проблема
Мы пытаемся создать XML-файл в работе spark с javaRDD и Dataframes на языке java. мы дефилируем пользовательский StructType для поддержки нашего кода элементов XML, как показано ниже
JavaRDD<Row> rowRdd = FeedAttributes.map(attribute ->
RowFactory.create(
attribute.getProducts() ));
final StructType struct = DataTypes.createStructType(fields);
StructType st3 = new StructType(new StructField[] {
new StructField("productName", DataTypes.StringType, true, null),
new StructField("instock", DataTypes.IntegerType, true, null)
});
final DataFrame df2 = this.sqlCon.createDataFrame(rowRdd, st3);
final HdfsReader reader = new HdfsReader(conf);
df2.repartition(1)
.write()
.mode(SaveMode.Overwrite)
.format("com.databricks.spark.xml")
.option("rootTag","CATALOG")
.save(folder.toString());
Боб
public class FeedAttributes implements Serializable{
private final List<ProductAttributes> products;
}
Мы столкнулись с приведенным ниже исключением, пожалуйста, предложите нам лучший способ для создания файла XML
org.apache.spark.SparkException: задание прервано из-за сбоя этапа: задача 0 на этапе 2.0 не выполнена 1 раз, самый последний сбой: потерянная задача 0.0 на этапе 2.0 (TID 4, localhost): scala.MatchError: (StringType,[ProductAttributes(productName=Bed, instock=1)]) (класса scala.Tuple2) в com.databricks.spark.xml.parsers.stax.StaxXmlGenerator$$anonfun$com$ базы данных $ spark $ xml $ парсеры $stax$StaxXmlGenerator$$writeElement$1$1.apply(StaxXmlGenerator.scala:38) в com.databricks.spark.xml.parsers.stax.StaxXmlGenerator$$anonfun$com$databricks$spark$xml$ анализаторы $ stax $ StaxXmlGenerator $$ writeElement $ 1 $ 1. apply (StaxXmlGenerator.scala: 38) в com.databricks.spark.xml.parsers.stax.StaxXmlGenerator$$anonfun$com$ базы данных $spark$xml$parsers$stax$StaxXmlGenerator$$writeElement$1$1$$anonfun$apply$3.apply(StaxXmlGenerator.scala:86) на com.databricks.spark.xml.parsers.stax.StaxXmlGenerator$$anonfun$com$databricks$spark$xml$parsers$stax$StaxXmlGenerator$$writeElement$1$1$$anonfun$apply$3.Apply(StaxXmlGenerator.scala:74) в scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33) в scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:108) в com.databricks.spark.xml.parsers.stax.StaxXeneG $$ anonfun $ com $ блоки данных $ spark $ xml $ парсеры $stax$StaxXmlGenerator$$writeElement$1$1.apply(StaxXmlGenerator.scala:74) в com.databricks.spark.xml.parsers.stax.StaxXmlGenerator$$anonfun$com$databricks$spark$xml$ парсеры $ stax $ StaxXmlGenerator $$ writeElement $ 1 $ 1.apply (StaxXmlGenerator.scala: 38) в com.databricks.spark.xml.parsers.stax.StaxXmlGenerator$.apply(StaxXmlGenerator.scala:92) на com.databricks.spark.xml.package$XmlSchemaRDD$$anonfun$5$$anon$1.next(package.scala:106) на com.databricks.spark.xml.package $ XmlSchemaRDD $$ anonfun $ 5 $$ anon $ 1. далее (package.scala:93) в scala.collection.Iterator$$anon$11.next(Iterator.scala:328) в org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsHadoopDataset$1$$anonfun$13$$anonfun$apply$6.apply$mcV$sp(PairRDDFunctions.scala:1109) в org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsHadoopDataset$1$$anonfun$13$$anonfun$apply$6.apply(PairRDDFunctions.scala:1108) в org.apache.spark.rdd.PairRDDFunctions $$ anonfunt $ $ сохранить $$ anonfun $ apply $ 6.apply (PairRDDFunctions.scala: 1108) в org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1285)