无法从直线访问 Spark 2.0 临时表
Posted
技术标签:
【中文标题】无法从直线访问 Spark 2.0 临时表【英文标题】:Can't access Spark 2.0 Temporary Table from beeline 【发布时间】:2016-09-27 18:50:33 【问题描述】:使用 Spark 1.5.1,我已经能够使用 Thrift Server 从 Beeline 访问 spark-shell 临时表。通过阅读 *** 上相关问题的答案,我已经能够做到这一点。
但是,升级到 Spark 2.0 后,我无法再看到 Beeline 的临时表,这是我正在执行的步骤。
我正在使用以下命令启动 spark-shell:
./bin/spark-shell --master=myHost.local:7077 —conf spark.sql.hive.thriftServer.singleSession=true
一旦 spark shell 准备好,我输入以下几行来启动 thrift 服务器并从一个数据帧创建一个临时视图,该数据帧将其源存储在一个 json 文件中
import org.apache.spark.sql.hive.thriftserver._
spark.sqlContext.setConf("hive.server2.thrift.port","10002")
HiveThriftServer2.startWithContext(spark.sqlContext)
val df = spark.read.json("examples/src/main/resources/people.json")
df.createOrReplaceTempView("people")
spark.sql("select * from people").show()
最后一条语句显示表格,运行良好。
但是,当我启动 beeline 并登录到我的 thrift 服务器实例时,我看不到任何临时表:
show tables;
+------------+--------------+--+
| tableName | isTemporary |
+------------+--------------+--+
+------------+--------------+--+
No rows selected (0,658 seconds)
我是否错过了有关我从 1.5.1 升级到 2.0 的 spark 的某些内容,如何才能访问我的临时表?
【问题讨论】:
【参考方案1】:升级到 spark 2.0.1 后这对我有用
val sparkConf =
new SparkConf()
.setAppName("Spark Thrift Server Demo")
.setMaster(sparkMaster)
.set("hive.metastore.warehouse.dir", hdfsDataUri + "/hive")
val spark = SparkSession
.builder()
.enableHiveSupport()
.config(sparkConf)
.getOrCreate()
val sqlContext = new org.apache.spark.sql.SQLContext(spark.sparkContext)
HiveThriftServer2.startWithContext(sqlContext)
【讨论】:
以上是关于无法从直线访问 Spark 2.0 临时表的主要内容,如果未能解决你的问题,请参考以下文章
Spark SQL 2.1 是不是支持将临时表或配置单元表写入 Mysql/Oracle?