在SparkCLR中使用zeppelin查询创建的DataFrame

时间:2016-01-05 15:12:00

标签: apache-spark apache-spark-sql mobius

我是Java和Spark的新手,我发现了一个令人印象深刻的库,它为Spark提供了C# binding,它允许我们使用C#来处理SparkSQL。

我的自定义数据存储中有一些具有ODBC和OPC接口的大量过程数据。我们希望将此数据公开给Apache Spark,以便我们可以使用Apache Zeppelin

等工具对此数据运行分析查询

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

我能够使用C#示例中的SQL创建一个示例并对其进行查询,但是我无法理解的是如何使其可用于激发,以便我可以使用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);

跳过这里得到一些指示以使其工作。

1 个答案:

答案 0 :(得分:0)

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