Spark2 Java 数据集 Sql

Posted

技术标签:

【中文标题】Spark2 Java 数据集 Sql【英文标题】:Spark2 Java Dataset Sql 【发布时间】:2016-12-07 20:22:52 【问题描述】:

尝试在 Spark2 中运行 JavaSparkSQLExample。使用 spark-core_2.11-2.0.2 和 spark-sql_2.11-2.0.2。有错误:The method createGlobalTempView(String) is undefined for the type Dataset<Row>.

其实latest API docs 没有定义这个方法。 Also the programming Guide 有这个。任何人都对此有所了解。

还有我们如何构建会话 - 因为你不能运行:.config("spark.some.config.option", "some-value")

SparkContext: Error initializing SparkContext.
org.apache.spark.SparkException: A master URL must be set in your configuration

【问题讨论】:

您使用哪个 Spark 版本? createGlobalTempView() 自 2.1.0 起可用 @Anton Okolnychyi 我正在使用 spark-core_2.11-2.0.2 和 spark-sql_2.11-2.0.2 查看最新的 [API Docs] [1] [1]:@987654323 @ 正确,API 文档也适用于 2.0.2,因为 Spark 2.1 尚未正式发布。您是否在 Spark 源代码中找到了该示例?我在 2.0.2 版的 Spark SQL 编程指南中找不到createGlobalTempView()。如果您正在查看 master 中的代码,您会看到未发布的 Spark 2.1。 是的,它也在编程指南中——它不涉及任何发行版本。此外,该示例未引用版本。 people.apache.org/~pwendell/spark-nightly/spark-master-docs/… 【参考方案1】:

根据您的 cmets,您正在查看 Spark nightly build 的编程指南。它基于 master 分支并包含尚未发布的代码。最有可能的是,它将登陆 Spark 2.2.0。另一方面,您的工件和 API 文档适用于最新的官方可用 Spark 版本 - 2.0.2。 createGlobalTempView() 仅出现在 2.1 中(即将推出但也不可用)。因此,您不能将 createGlobalTempView() 与 Spark 2.0.2(工件的版本)一起使用。要查看 Spark 2.0.2 中可用的内容,请参阅此guide。

每个 Spark 应用程序都需要一个 Master URL。您可以将其作为参数传递给spark-submit 或直接在代码中设置:

val spark = SparkSession.builder() .appName("App name") .master("local[4]") .getOrCreate()

【讨论】:

好的,是的,我在 2.0.2 上,我真的不关心 createGlobalTempView 我只是弄错了。顺便说一句,您提供的指南还引用了相同的示例代码链接(因此它是相同的新代码)。我把这部分注释掉了。试过.master("local[4]") - 它工作了。我终于真的需要连接到 Cassandra - 如何?在旧版本中,我们使用 SparkConf ` conf.setMaster("local[*]"); conf.set("spark.cassandra.connection.host", "localhost"); conf.set("spark.cassandra.connection.port", "9042");` 我们现在做什么?非常感谢, 您可以在 Spark 2 中使用“.config”进行设置。 SparkSession.builder() .appName("App name") .master("local[4]") .config("spark.cassandra .connection.host", "localhost") .config("spark.cassandra.connection.port", "9042") .getOrCreate()

以上是关于Spark2 Java 数据集 Sql的主要内容,如果未能解决你的问题,请参考以下文章

用于聚合的 Spark 数据集或数据框

Spark 2.0 数据集与数据帧

spark2

使用 Java 在 Spark 2.0 中使用数据集的 GroupByKey

使用来自另一个数据集的值搜索和更新 Spark 数据集列

Spark 2.2 排序失败,数据集庞大