1

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

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

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

4

2 回答 2

2

SparkCLR 与 spark-xml 一起使用。以下代码展示了如何使用 C# 将 XML 处理为 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");
于 2016-01-28T21:45:39.807 回答
0

我不知道 .NET 世界中有一个很好的 Spark 类比。P-LINQ 可能是最接近的,但它不是分布式的。Microsoft Azure 提供了 Hadoop、R 等,您可以将它们用于分布式 map-reduce 类型的功能。希望项目所有者了解您在使用 C# 完成工作时面临更多的工作。

于 2016-01-19T02:30:59.647 回答