2016-09-26 135 views
2

我需要知道如何解析Spark中的XML文件。我正在接收来自kafka的流式数据,然后需要解析流式数据。解析Apache Spark中的XML数据

这里是我的星火代码接收数据:

directKafkaStream.foreachRDD(rdd ->{ 
      rdd.foreach(s ->{ 
       System.out.println("&&&&&&&&&&&&&&&&&" +s._2); 
      }); 

和结果:

<root> 
<student> 
<name>john</name> 
<marks>90</marks> 
</student> 
</root> 

如何通过这些XML元素?

+1

您是否搜索过此前的问题?如:http://stackoverflow.com/questions/33078221/xml-processing-in-spark –

+0

@Binary Nerd,谢谢你的回应。我的火花应用程序正在逐行读取数据。所以我需要逐行解析,而不使用开始元素和/或结束元素。 – user6325753

回答

3

谢谢你们..问题就迎刃而解了。 这里是解决方案。

String xml = "<name>xyz</name>"; 
DOMParser parser = new DOMParser(); 
try { 
    parser.parse(new InputSource(new java.io.StringReader(xml))); 
    Document doc = parser.getDocument(); 
    String message = doc.getDocumentElement().getTextContent(); 
    System.out.println(message); 
} catch (Exception e) { 
    // handle SAXException 
} 
+0

这是否适用于Spark中的大数据? –

+0

@MasudRahman,请看下面提到的链接https://stackoverflow.com/questions/33078221/xml-processing-in-spark/40653300#40653300 – user6325753

2

在处理流式数据时,使用databricks的spark-xml lib进行xml数据处理会很有帮助。

参考:https://github.com/databricks/spark-xml

+0

感谢您的回复。我的火花应用程序正在逐行读取数据。所以我需要逐行解析,而不使用开始元素和/或结束元素。 – user6325753

+0

我花了几个小时与此,然后我发现它不读取自闭行。 –