Spark使用xpath生成键值对

时间:2016-01-01 05:55:00

标签: scala apache-spark

我需要从xml中提取数据并使用CSV文件将提取的数据连接起来(示例栏:2)。

我尝试了以下代码:

val input = sc.wholeTextFiles("/user/hadoop/selva/Test.xml")
val xmlVal = input.values
val mapVal = xmlVal.map(x => scala.xml.XML.loadString(x))
val res = mapVal.map(x => (x \\ "ALERT" \\"property" \\"name")text)
res.collect()
Output : res3: Array[String] = Array(stackoverflowstackoverflowquery)

预期输出:我需要以键值对的形式加上数据的上述值。(Spark内连接)

  

键:stackoverflow值:1
  密钥:stackoverflow值:1
  键:查询值:1

因此,我可以使用Spark连接来连接两个数据集。

1 个答案:

答案 0 :(得分:0)

修改 由于mapVal只包含一个元素,因此您必须应用flatMap而不是map

mapVal.flatMap(x=>(x\\"ALERT" \\"property" \\"name").map(y=>(y.text,1)))