Vla*_*cak 10 hadoop hive apache-spark apache-spark-sql apache-spark-2.0
我们正在尝试使用ThriftServer从spark 2.0.0中的spark temp表中查询数据.
首先,我们创建了启用Hive支持的sparkSession.目前,我们使用sqlContext启动ThriftServer,如下所示:
HiveThriftServer2.startWithContext(spark.sqlContext());
Run Code Online (Sandbox Code Playgroud)
我们有注册临时表"spark_temp_table"的火花流:
StreamingQuery streamingQuery = streamedData.writeStream()
                                             .format("memory")
                                             .queryName("spark_temp_table")
                                             .start();
Run Code Online (Sandbox Code Playgroud)
通过直线,我们可以看到临时表(运行SHOW TABLES);
当我们想用这种方法运行第二个作业(第二个sparkSession)时,我们必须用不同的端口启动第二个ThriftServer.
我这里有两个问题:
有没有办法让一个端口上有一个ThriftServer可以访问不同sparkSessions中的所有临时表?
HiveThriftServer2.startWithContext(spark.sqlContext());用@DeveloperApi.注释.有没有办法以编程方式在代码中启动带有上下文的thrift服务器?
我看到--conf spark.sql.hive.thriftServer.singleSession=true在启动时传递给ThriftServer的配置(sbin/start-thriftserver.sh)但是我不明白如何为作业定义它.我试图在sparkSession构建器中设置此配置属性,但beeline没有显示临时表.
小智 5
有没有办法让一个端口上有一个ThriftServer可以访问不同sparkSessions中的所有临时表?
否.ThriftServer使用特定会话和临时表只能在此会话中访问.这就是为什么:
beeline没有显示临时表.
当你启动独立服务器时sbin/start-thriftserver.sh.
spark.sql.hive.thriftServer.singleSession并不意味着您为多个服务器获得单个会话.它对与单个Thrift服务器的所有连接使用相同的会话.可能的用例:
foo.foo|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           953 次  |  
        
|   最近记录:  |