我使用的是最新的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");
按照以下命令启动节俭服务器和直线
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表,我希望看到paymentDataCache临时表。请查看附件中的屏幕截图。
我还尝试使用启动旧款服务器
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直线中没有看到临时表。
注册临时表时,该表仅存在于创建该表的Spark上下文中。因此,当您启动一个新的节俭服务器时,它运行的Spark上下文与spark-shell
的上下文不同,并且看不到临时表。
如果你想运行一个测试,你可以在你的火花壳中放入以下代码行:
org.apache.spark.sql.hive.thriftserver.HiveServer2.startWithContext(sqlContext)
它使用您传入的Spark上下文启动一个新的节俭服务器。这样,新的节约服务器将能够看到注册的临时表。