2

我是 Java 和 Spark 世界的新手,我发现了一个令人印象深刻的库,用于为 Spark 提供C# 绑定,它允许我们使用 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);

跳到这里获得一些指示以使其正常工作。

4

1 回答 1

0

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

于 2016-01-05T22:44:58.470 回答