2016-09-26 3 views
2

Мне нужно знать, как разбирать XML-файл в Spark. Я получаю потоковые данные от kafka, а затем нужно разбирать эти потоковые данные.Анализ XML-данных в Apache Spark

Вот мой Спарк код для получения данных:

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

Поскольку вы обрабатываете потоковые данные, было бы полезно использовать spark-xml lib databricks для обработки данных xml.

Ссылка: https://github.com/databricks/spark-xml

+0

Спасибо за ответ. Мое искровое приложение читает данные по строкам. Поэтому мне нужно разбирать строки за строкой, не используя начальный элемент и/или конечный элемент. – user6325753

+0

Я провел пару часов с этим, а затем обнаружил, что он не читает самозакрывающиеся строки. –

 Смежные вопросы

  • Нет связанных вопросов^_^