Spark-submit Sql Context Create Statement 不起作用

Posted

技术标签:

【中文标题】Spark-submit Sql Context Create Statement 不起作用【英文标题】:Spark-submit Sql Context Create Statement does not work 【发布时间】:2015-08-17 18:00:57 【问题描述】:

我下面的代码不适用于 Spark-submit。

sqlContext.sql(s"""
create external table if not exists landing (
date string,
referrer string)
partitioned by (partnerid string,dt string)
row format delimited fields terminated by '\t' lines terminated by '\n'
STORED AS TEXTFILE LOCATION 's3n://....'
      """)

它给出了错误: 线程“主”java.lang.RuntimeException 中的异常:[1.2] 失败:预期“带有”,但发现标识符创建

此代码在 Spark-shell 中有效,但在 Spark-submit 中无效。可能是什么原因?

【问题讨论】:

可能缺少导入? 还有import sqlContext.implicits._? class Analysis extends Serializable val sc = new SparkContext() val sqlContext = SQLContextSingleton.getInstance(sc) import sqlContext.implicits._ => 我这样运行但没办法:( 您最终找到解决方案了吗? 【参考方案1】:

spark-shell 中的“sqlContext”默认为“HiveContext”。也许您需要在脚本中新建一个 HiveContext 而不是 sqlContext。

你可以这样新建它:

import SparkContext._
import org.apache.spark.sql.hive._ 
val sc = new SparkContext()
val sqlContext = new HiveContext(sc)

【讨论】:

以上是关于Spark-submit Sql Context Create Statement 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

spark-submit提交任务时报错,Error initializing SparkContext

spark-submit log4j 配置在 spark 上下文中没有影响

spark-submit之使用pyspark

使用 spark-submit 无法从 hive 中找到表

Pyspark:spark-submit 不像 CLI 那样工作

Spark SQL toDF 方法因 java.lang.NoSuchMethodError 而失败