2016-01-19 83 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中更容易使用。 –