Spark临时表问题

时间:2016-05-11 19:21:58

标签: apache-spark apache-spark-sql

我正在使用最新的HDP Sandbox (2.4.0.0-169)。我在Spark-shell(Spark Version 1.6.0

中编写了以下代码
var orcData = sqlContext.sql("select code from sample_07");
var paymentDataCache = orcData.cache;
paymentDataCache.registerTempTable("paymentDataCache");

按照以下命令启动thrift服务器和beeline

1) export SPARK_HOME=/usr/hdp/2.4.0.0-169/spark/
2) sudo ./sbin/start-thriftserver.sh --master yarn-client --executor-memory 512m --hiveconf hive.server2.thrift.port=10015
3) ./bin/beeline
4) !connect jdbc:hive2://localhost:10015

现在如果我执行show tables,我希望看到paymentDataCache临时表。请找到附加的屏幕截图。

我还尝试使用

启动thrift服务器
sudo ./sbin/start-thriftserver.sh --master yarn-client --executor-memory 512m --hiveconf hive.server2.thrift.port=10015 --conf spark.sql.hive.thriftServer.singleSession=true

但没有运气。

我们在HDP (2.3.2.0-2950 with Spark 1.4.1) 9节点集群中尝试了相同的过程,但我们没有看到Spark直线中的临时表。

1 个答案:

答案 0 :(得分:1)

注册临时表时,该表仅存在于创建它的Spark上下文中。因此,当您启动一个新的thriftserver时,它运行的Spark上下文与您的spark-shell不同,并且看不到临时表。

如果要运行测试,可以在spark-shell中输入以下代码:

org.apache.spark.sql.hive.thriftserver.HiveServer2.startWithContext(sqlContext)

它使用您传入的Spark上下文启动一个新的thriftserver。这样,新的thriftserver将能够看到已注册的临时表。