代码之家  ›  专栏  ›  技术社区  ›  Kevin Vasko

使用Spark和C#处理XML文件[已关闭]

  •  1
  • Kevin Vasko  · 技术社区  · 8 年前

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

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

    有人对如何做到这一点有什么建议吗?如果不是,我想下一个选择是将数据集转换为SparkCLR更为本地的内容,但不确定最佳方法。

    2 回复  |  直到 7 年前
        1
  •  2
  •   skaarthik    8 年前

    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");
    
        2
  •  0
  •   J Burnett    8 年前

    我不知道在.NET世界中有一个很好的Spark类比。P-LINQ可能是最接近的,但它不是分布式的。Microsoft Azure提供了Hadoop、R等,可用于分布式地图缩减类型功能。 希望项目负责人明白,要用C#完成工作,您需要付出更多的努力。

    推荐文章