我们试图使用ThriftServer从spark 2.0.0中的spark temp表中查询数据。以编程方式避免以创建的上下文启动HiveThriftServer2
首先,我们创建了SparkSession并启用了Hive支持。 目前,我们开始ThriftServer与sqlContext这样的:
HiveThriftServer2.startWithContext(spark.sqlContext());
我们有注册临时表火花流 “spark_temp_table”:
StreamingQuery streamingQuery = streamedData.writeStream()
.format("memory")
.queryName("spark_temp_table")
.start();
随着直线,我们能够看到的临时表(运行SHOW TABLES );
当我们想用这种方法运行第二个工作(第二个sparkSession)时,我们必须从不同的端口启动第二个ThriftServer。
我这里有两个问题:
有没有办法有一个端口上一个ThriftServer可以访问所有的临时表在不同的sparkSessions?
HiveThriftServer2.startWithContext(spark.sqlContext());
注有@DeveloperApi
。有没有什么方法可以编程方式启动不带代码的上下文服务器?
我看到有配置--conf spark.sql.hive.thriftServer.singleSession=true
在启动时传递给ThriftServer(sbin/start-thriftserver.sh),但我不明白如何定义这个作业。我试图在sparkSession构建器中设置此配置属性,但直线没有显示临时表。
回答你的问题之前,我会问一个问题:)你真的需要开始'ThriftServer'“编程”? – user1314742
@ user1314742不,我们不需要(也不想 - 试图避免'HiveThriftServer2.startWithContext(spark.sqlContext());')。我们实际上试图启动'sbin/start-thriftserver。sh'与单一会议,但没有运气。基本上我们需要的是通过Spark JDBC服务器访问'temp'表并且查询'temp'表(从具有'JDBC'连接的不同应用程序)查询 – VladoDemcak
当我们全部使用'master local''时可以看到临时表? – VladoDemcak