2016-09-26 3 views
2

Ich muss wissen, wie Sie XML-Datei in Spark analysieren. Ich empfange Streaming-Daten von Kafka und muss dann diese gestreamten Daten analysieren.Parse XML-Daten in Apache Spark

Hier ist meine Spark-Codedaten zu erhalten:

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

und Ergebnisse:

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

Wie diese XML-Elemente zu übergeben?

+1

Sie haben nach vorherigen Fragen zu diesem Thema gesucht? Wie: http://stackoverflow.com/questions/33078221/xml-processing-in-spark –

+0

@Binary Nerd, Danke für die Antwort. Meine Funkenanwendung liest Daten Zeile für Zeile. Also muss ich Zeile für Zeile analysieren, ohne Startelement und/oder Endelement zu verwenden. – user6325753

Antwort

3

Danke Jungs .. Problem gelöst. Hier ist die Lösung.

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

Funktioniert das mit Big Data in Spark? –

+0

@MasudRahman, bitte sehen Sie sich den Link https://StackOverflow.com/questions/33078221/xml-processing-in-spark/40653300#40653300 an – user6325753

2

Bei der Verarbeitung von Streaming-Daten wäre es hilfreich, die spark-xml-Libelle von Databricks für die XML-Datenverarbeitung zu verwenden.

Referenz: https://github.com/databricks/spark-xml

+0

Danke für die Antwort. Meine Funkenanwendung liest Daten Zeile für Zeile. Also muss ich Zeile für Zeile analysieren, ohne Startelement und/oder Endelement zu verwenden. – user6325753

+0

Ich habe einige Stunden damit verbracht, und dann habe ich festgestellt, dass es nicht selbstschließende Zeilen liest. –