我们正在尝试使用 ThriftServer 从 spark 临时表中查询数据,在 spark 2.0.0 中。
首先,我们创建了启用 Hive 支持的 sparkSession。目前,我们使用 sqlContext 启动 ThriftServer,如下所示:
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 builder 中设置此配置属性,但直线没有显示临时表。