我有一个XML文件,我试图使用Scala通过Spark-Shell进行处理。我被困在需要使用Scala&#39>读取Array [String]的位置
scala> val fileRead = sc.textFile("source_file")
fileRead: org.apache.spark.rdd.RDD[String] = source_file MapPartitionsRDD[8] at textFile at <console>:21
scala> val strLines = fileRead.map(x => x.toString)
strLines: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[9] at map at <console>:23
scala> val fltrLines = strLines.filter(_.contains("<record column1="))
fltrLines: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[10] at filter at <console>:25
scala> fltrLines.take(5)
res1: Array[String] = Array("<record column1="1" column2="1" column3="5" column4="2010-11-02T18:59:01.140" />", "<record column2=....
我需要读取Array [String]的这个值:
"<record column1="1" column2="1" column3="5" column4="2010-11-02T18:59:01.140" />"
作为XML,以便我可以使用Scala Elem和NodeSeq类来提取数据。所以我想做一些事情:
val xmlLines = fltrLines.....somehow get the value of the value of Array[String] first index
然后使用xmlLines.attributes等
答案 0 :(得分:2)
您可以执行fltrLines.map { scala.xml.XML.loadString _ }
,这应该使用字符串构建Elem
。检查docs,注意这是一个旧的Scaladoc,当Scala std时。库。仍然包含XML,现在它驻留在一个单独的jar文件中。因此,如果您使用的是较新版本,请确保将正确的jar放在类路径中。