我正在使用最新的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直线中的临时表。
答案 0 :(得分:1)
注册临时表时,该表仅存在于创建它的Spark上下文中。因此,当您启动一个新的thriftserver时,它运行的Spark上下文与您的spark-shell
不同,并且看不到临时表。
如果要运行测试,可以在spark-shell中输入以下代码:
org.apache.spark.sql.hive.thriftserver.HiveServer2.startWithContext(sqlContext)
它使用您传入的Spark上下文启动一个新的thriftserver。这样,新的thriftserver将能够看到已注册的临时表。