我们试图使用ThriftServer从spark 2.0.0中的spark临时表中查询数据。
首先,我们创建了具有启用Hive支持的sparkSession。目前,我们使用这样的ThriftServer来启动sqlContext:
HiveThriftServer2.startWithContext(spark.sqlContext());我们有星火流和注册的临时表"spark_temp_table":
StreamingQuery streamingQuery = streamedData.writeStream()
.format("memory")
.queryName("spark_temp_table")
.start();使用直线,我们可以看到临时表(运行显示表);
当我们想用这种方法运行第二个作业(使用第二个sparkSession)时,我们必须用不同的端口启动第二个ThriftServer。
我有两个问题:
HiveThriftServer2.startWithContext(spark.sqlContext());使用@DeveloperApi进行注释。是否有任何方法可以使用不在代码中的上下文以编程方式启动节俭服务器?
我看到了在启动时将配置--conf spark.sql.hive.thriftServer.singleSession=true传递给ThriftServer (sbin/start-thriftserver.sh),但我不知道如何为作业定义这个配置。我试图在sparkSession构建器中设置此配置属性,但没有显示临时表。发布于 2016-11-20 12:17:27
有任何方法可以让一个ThriftServer在一个端口上访问不同sparkSessions中的所有临时表吗?
不是的。ThriftServer使用特定的会话,只能在此会话中访问临时表。这就是为什么:
没有显示临时表。
使用sbin/start-thriftserver.sh启动独立服务器时。
spark.sql.hive.thriftServer.singleSession并不意味着您可以为多个服务器获得一个会话。对于单个服务器的所有连接,它都使用相同的会话。可能用例:
foo。foohttps://stackoverflow.com/questions/39719043
复制相似问题