使用 Spark 和 C# 处理 XML 文件

本文关键字:XML 文件 处理 Spark 使用 | 更新日期: 2023-09-27 18:30:58

我正在开发一个系统,该系统将充当仿真工具链数据集的 OLAP 引擎。这些工具以 XML 格式生成结果。

对我来说,最简单和最简单的解决方案是简单地使用spark-xml直接使用python,Scala等访问XML文件。但问题是项目所有者希望使用 C#,因为这是原始模拟工具链的内置内容。我知道有用于C#的SparkCLR,但我不知道在C#中使用Spark-XML的好方法。

有人对如何做到这一点有任何建议吗?如果没有,我想下一个选择是将数据集转换为 SparkCLR 更原生的东西,但不确定最佳方法。

使用 Spark 和 C# 处理 XML 文件

SparkCLR 可与 spark-xml 配合使用。下面的代码演示如何使用 C# 将 XML 作为 Spark 数据帧进行处理。可以使用此代码示例开始为 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");
我不知道在

.NET世界中有一个很好的Spark模拟。 P-LINQ 可能是最接近的,但它不是分布式的。 Microsoft Azure提供Hadoop,R等,可用于分布式map-reduce类型功能。希望项目所有者了解你在 C# 中完成工作面临着更多的努力。