2016-05-11 18 views
1

Ich verwende die neueste HDP Sandbox (2.4.0.0-169). Ich habe unten Code in Funken Shell (Spark Version 1.6.0)Problem mit Spark temporäre Tabelle

var orcData = sqlContext.sql("select code from sample_07"); 
var paymentDataCache = orcData.cache; 
paymentDataCache.registerTempTable("paymentDataCache"); 

unter Befehle Gefolgt geschrieben thrift-Server zu starten und

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 

Jetzt beeline Wenn ich zeigen Tabellen ausführen, ich erwarte, um zu sehen paymentDataCache temporäre Tabelle. Anbei finden Sie den Screenshot.

Ich habe auch versucht

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

aber kein Glück mit dem thrift Server zu starten.

Wir haben den gleichen Prozess in HDP (2.3.2.0-2950 with Spark 1.4.1) 9-Knoten-Cluster versucht, aber wir sehen keine temporären Tabellen in Spark beeline.

Antwort

1

Wenn Sie eine temporäre Tabelle registrieren, ist die Tabelle nur im Spark-Kontext vorhanden, in dem sie erstellt wurde. Wenn Sie also einen neuen Thriftserver starten, unterscheidet sich der Spark-Kontext, in dem er ausgeführt wird, von dem Ihrer spark-shell und kann die temporäre Tabelle nicht sehen.

Wenn Sie einen Test ausführen möchten, können Sie in Ihrem setzen Funken Shell die folgende Codezeile:.

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

Es ein neues beginnt thriftserver die Spark-Kontext verwenden, die Sie in geben Auf diese Weise Der neue Thriftserver kann die registrierte temporäre Tabelle sehen.

Verwandte Themen