首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >避免以编程方式使用创建的上下文启动HiveThriftServer2

问避免以编程方式使用创建的上下文启动HiveThriftServer2
EN

Stack Overflow用户
提问于 2016-09-27 07:50:35
回答 1查看 1.3K关注 0票数 10

我们试图使用ThriftServer从spark 2.0.0中的spark临时表中查询数据。

首先,我们创建了具有启用Hive支持的sparkSession。目前,我们使用这样的ThriftServer来启动sqlContext:

代码语言:javascript
复制
HiveThriftServer2.startWithContext(spark.sqlContext());

我们有星火流和注册的临时表"spark_temp_table":

代码语言:javascript
复制
StreamingQuery streamingQuery = streamedData.writeStream()
                                             .format("memory")
                                             .queryName("spark_temp_table")
                                             .start();

使用直线,我们可以看到临时表(运行显示表);

当我们想用这种方法运行第二个作业(使用第二个sparkSession)时,我们必须用不同的端口启动第二个ThriftServer。

我有两个问题:

  1. 有任何方法可以让一个ThriftServer在一个端口上访问不同sparkSessions中的所有临时表吗?
  2. HiveThriftServer2.startWithContext(spark.sqlContext());使用@DeveloperApi进行注释。是否有任何方法可以使用不在代码中的上下文以编程方式启动节俭服务器? 我看到了在启动时将配置--conf spark.sql.hive.thriftServer.singleSession=true传递给ThriftServer (sbin/start-thriftserver.sh),但我不知道如何为作业定义这个配置。我试图在sparkSession构建器中设置此配置属性,但没有显示临时表。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-20 12:17:27

有任何方法可以让一个ThriftServer在一个端口上访问不同sparkSessions中的所有临时表吗?

不是的。ThriftServer使用特定的会话,只能在此会话中访问临时表。这就是为什么:

没有显示临时表。

使用sbin/start-thriftserver.sh启动独立服务器时。

spark.sql.hive.thriftServer.singleSession并不意味着您可以为多个服务器获得一个会话。对于单个服务器的所有连接,它都使用相同的会话。可能用例:

  • 你启动节俭服务器。
  • client1连接到此服务器并创建临时表foo。
  • client2连接到此服务器并读取foo
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39719043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档