我需要从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连接来连接两个数据集。
答案 0 :(得分:0)
修改强>
由于mapVal
只包含一个元素,因此您必须应用flatMap
而不是map
:
mapVal.flatMap(x=>(x\\"ALERT" \\"property" \\"name").map(y=>(y.text,1)))