2017-03-06 3 views
0

現在私のスカラプロジェクトでは、kafkaを使用してspark-streamingでxmlデータを受け取ります。私は簡単な方法でそれをやっている:xml to scala

KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder](ssc,kafkaparams,topics) 
val lines = inputstream.map(_._2) 
lines.foreachRDD(rdd => { 
    rdd.foreach(record => { 
    println(record)} 
    )}  
) 

その後私はDataFrameに私の文字列を変換する必要があります。そのためには、.xmlへのエクスポートとsqlcontext.read.load( "pathtofile")でのインポートを使用し、すべて正常に動作します。

質問:kafka-rddから単一行のxml-stringをDataFrameに直接変換することはできますか?どうすればできますか?

答えて

0

xml loaderの使用を使用すると、のようなあなたの目標を達成することができます

import org.apache.spark.sql.SQLContext 

val sqlContext = new SQLContext(sc) 
val df = sqlContext.read 
    .format("com.databricks.spark.xml") 
    .option("rowTag", "<your tag>") 
    .load("<path to your xml>") 
+0

はい、私はすでにそれは素晴らしい作品、私が述べてきたように、ファイルから既存のXMLをインポートするには、この方法を使用して、きました。しかし、私の質問はどのように直接rddからdfを作成する、私はkafkaからxmlを受信するステップで持っている:) –