如何将WrappedArray [String]转换为分隔的String

时间:2017-07-03 12:49:47

标签: scala apache-spark dataframe apache-spark-sql spark-dataframe

我有以下结构的xml架构

enter image description here

我对_EventStartDateand和E 感兴趣,这些值必须在结束日期转换为AVRO记录,并且E是值。

为了转换这个,我使用databricks XML解析器,然后创建一个临时表,然后在日期重新分区。

import org.apache.spark.{ SparkContext, SparkConf }
import org.apache.spark.sql.SQLContext
import com.databricks.spark.avro._

val xmlDF = 
sqlContext.read.format("com.databricks.spark.xml").option("rowTag", "Events").load("/hdfsPath").cache
xmlDF.registerTempTable("event_tbl")
val xmlDF_Tbl = sqlContext.sql("SELECT `@EventStartDate` as eventDate,E as event FROM event_tbl")
val xmlDF_Tbl_Part = xmlDF_Tbl.repartition($"eventDate").rdd.map(s => (s(0),s(1).toString))
xmlDF_Tbl_Part.saveAsTextFile("path to Hdfs")

我得到以下格式的输出2015,WrappedArray([E1],[E2])

我希望以下列格式输出2015年,E1 @@@ E2 @@@ E3等等

DF看起来像这样:

[@ BL:string,@ EventStartDate:string,@ MatialNumber:bigint,@ SerialNumber:bigint,@ UTCOfs:bigint,E:array [struct&lt; @C:string,@ EID:bigint,@ Hst :串,@ L:BIGINT,@ MID:串,@ S:串,@源:串,@ T:串,@送给Tgt:串,@ USR:串,@ VALUE:串GT;]] < / p>

现在如何将此包装数组转换为分隔字符串

0 个答案:

没有答案