Apache spark 使用SparkCLR中创建的数据帧和齐柏林飞艇查询

Apache spark 使用SparkCLR中创建的数据帧和齐柏林飞艇查询,apache-spark,apache-spark-sql,mobius,Apache Spark,Apache Spark Sql,Mobius,我是Java和Spark的新手,我发现了一个令人印象深刻的库,可以提供给Spark,它允许我们使用C#与SparkSQL一起工作 我的一个自定义数据存储中有大量的过程数据,该存储具有ODBC和OPC接口。我们希望将此数据公开给apachespark,以便使用apachezeppelin 由于我的自定义存储上没有jdbc接口,所以我正在考虑创建c#代码,以便使用可用的ODBC接口从自定义数据存储中提取数据,并使用historyDataFrame.RegisterEmptable(“mydata”)

我是Java和Spark的新手,我发现了一个令人印象深刻的库,可以提供给Spark,它允许我们使用C#与SparkSQL一起工作

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

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

我能够创建一个示例并使用C#示例中的SQL查询它,但我无法理解的是如何将其用于spark,以便我可以使用类似ApacheZeppelin的工具

另外,将大量数据加载到
sparksql
中的最佳方法是什么,在示例中尝试这样做可能无法加载超过一百万条记录

    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);
var rddPeople=SparkCLRSamples.SparkContext.Parallelize(
新名单
{
新对象[]{“123”,“Bill”,43,新对象[]{“Columbus”,“Ohio”},新字符串[]{“Tel1”,“Tel2”},
新对象[]{“456”,“Steve”,34,新对象[]{“西雅图”,“华盛顿”},新字符串[]{“Tel3”,“Tel4”}
});
var dataFramePeople=GetSqlContext().CreateDataFrame(rddPeople,schemaPeople);

我想在这里得到一些指示,让它工作起来

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

将此处创建的数据框与
Spark
集成的最佳方法是什么,以便它可以在
齐柏林
中使用。也可以将数据附加到rdd中,即创建rdd后添加更多人员。对于增量数据,您只需转储到新的csv文件并添加到同一位置。下次从这个位置加载RDD时,将把整个数据加载到RDD中。齐柏林飞艇对SparkCLR的支持正在调查中。在这种情况下,您可能不需要SparkCLR中提供的C#绑定,如果愿意,您可以将Zepplin与Scala一起使用。