将SparkCLR中创建的DataFrames与zeppelin查询一起使用



我是Java和Spark世界的新手,我发现了一个令人印象深刻的库,用于为Spark提供C#绑定,使我们能够使用C#与SparkSQL一起工作。

我的一个自定义数据存储中有大量的过程数据,该存储具有ODBC和OPC接口。我们希望将此数据公开给Apache Spark,以便使用Apache Zeppelin 等工具对此数据运行分析查询

由于我的自定义存储中没有jdbc接口,我正在考虑创建c#代码,以便使用可用的ODBC接口从自定义数据存储中提取数据,并使用historyDataFrame.RegisterTempTable("mydata"); 将其提供给spark

我可以创建一个示例,并使用C#示例中的SQL进行查询,但我无法理解的是,如何将其提供给spark,以便我可以使用Apache Zeppelin等工具。

此外,将大量数据加载到SPARK SQL的最佳方式是什么,尝试像示例中那样做可能无法加载超过一百万条记录。

    var rddPeople = SparkCLRSamples.SparkContext.Parallelize(
                            new List<object[]>
                            {
                                new object[] { "123", "Bill", 43, new object[]{ "Columbus", "Ohio" }, new string[]{ "Tel1", "Tel2" } },
                                new object[] { "456", "Steve", 34,  new object[]{ "Seattle", "Washington" }, new string[]{ "Tel3", "Tel4" } }
                            });
    var dataFramePeople = GetSqlContext().CreateDataFrame(rddPeople, schemaPeople);

跳到这里来获取一些指针以使其工作。

您可以以csv格式转储数据,并让Spark/SparkCLR加载该数据以进行Spark SQL分析。从csv文件加载数据将获得与代码中的并行化相同的结果,只是它将具有更好的性能。如果自定义SQL源中的数据只是附加的,而没有对现有数据进行更新,那么这种方法将适用于您。如果您的自定义源允许更新,csv转储将过时,您需要在进行分析之前保持新鲜。另一种选择是探索是否可以使用JDBC-ODBC桥将Spark SQL直接连接到您的自定义源,从而无需以csv格式转储数据。

相关内容

  • 没有找到相关文章

最新更新