2016-01-19 131 views
0

我正在研究一個將作爲模擬工具鏈數據集的OLAP引擎的系統。這些工具以XML格式生成結果。使用Spark和C處理XML文件#

對我來說,最簡單和最簡單的解決方案就是直接使用spark-xml直接使用python,Scala等來訪問XML文件。但問題是項目所有者想要使用C#,因爲這就是原始的模擬工具鏈是內置的。我知道C#有SparkCLR,但我不知道在C#中使用Spark-XML的好方法。

有沒有人有任何建議如何做到這一點?如果沒有,我猜下一個選擇是將數據集翻譯成更加本地化的SparkCLR,但不確定最佳方法。

回答

2

SparkCLR適用於spark-xml。以下代碼顯示瞭如何使用C#將Spark作爲Spark DataFrame處理。您可以使用此代碼示例開始構建Spark的XML處理C#應用程序。此示例實現了https://github.com/databricks/spark-xml#scala-api上提供的相同示例。請注意,您在提交作業時需要包含spark-xml jar。

 var sparkConf = new SparkConf(); 
     var sparkContext = new SparkContext(sparkConf); 
     var sqlContext = new SqlContext(sparkContext); 

     var df = sqlContext.Read() 
      .Format("com.databricks.spark.xml") 
      .Option("rowTag", "book") 
      .Load(@"D:\temp\spark-xml\books.xml"); 
     var selectedData = df.Select("author", "@id"); 
     selectedData.Write() 
      .Format("com.databricks.spark.xml") 
      .Option("rootTag", "books") 
      .Option("rowTag", "book") 
      .Save(@"D:\temp\spark-xml\newbooks.xml"); 
0

我不知道在.NET世界中Spark的好模擬。 P-LINQ可能是最接近的,但它不是分佈式的。 Microsoft Azure提供Hadoop,R等,您可以將它們用於分佈式映射 - 縮減類型功能。 希望項目所有者能夠理解您正在面對更多努力來完成C#中的工作。

+0

我發現這個https://github.com/Microsoft/SparkCLR,它允許我編寫C#代碼來與Spark交互。但我想要與Spark Spark-XML上的XML代碼進行交互。讓這兩個人一起工作將是挑戰。我唯一能做的就是制定一個臨時措施,並使用某些東西來獲取XML數據(例如Apache Nifi,flume等),並以其他一些方式存儲它,這些方式在C#/ SparkCLR中更容易使用。 –