我是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);
跳过这里得到一些指示以使其工作。
答案 0 :(得分:0)
您可以以csv格式转储数据,并让Spark / SparkCLR加载该数据以进行Spark SQL分析。从csv文件加载数据将与代码中的parallelize具有相同的结果,除了它将具有更好的性能。如果自定义SQL源中的数据仅附加而不更新现有数据,则此方法将适用于您。如果您的自定义源允许更新,则csv转储将过时,您需要一种方法在进行分析之前保持新鲜。另一种方法是探索是否可以使用JDBC-ODBC桥将Spark SQL直接连接到自定义源,从而无需以csv格式转储数据。