Я использую приведенный ниже код для преобразования входных данных.У меня есть около 70 000 входных XML-файлов, и для создания сводного набора данных Spark требуется около 5,6 минут.
Есть ли способ оптимизировать его дальше?
String seqnum = "seqnum";
Dataset<Row> atgXmlParse = spark
.read()
.format("xml")
.option(rowtag, "RECORD")
.schema(schema)
.load(path);
Dataset<Row> atgXmlExplodeDS = atgXmlParse
.withColumn(seqnum, monotonically_increasing_id())
.select(col(seqnum), explode(col("PROP")).as("PROP"))
.select(col(seqnum), col("PROP.*"));
return atgXmlExplodeDS
.groupBy(seqnum)
.pivot("_NAME", colList)
.agg(concat_ws(",", collect_list(col("PVAL"))));