我正在尝试用pyspark运行配置单元查询。我正在使用hortonworks,所以我需要使用Hive仓库连接器。
运行一个甚至多个查询很容易而且很有效。我的问题是我想 set
之前的命令。例如,要在tez ui中设置dag名称: set hive.query.name=something relevant
或者设置一些内存配置 set hive.tez.container.size = 8192
. 为了使这些语句生效,它们需要在与主查询相同的会话上运行,这就是我的问题。
我试过两种方法:
第一个是为每个查询生成一个新的配置单元会话,其中包含一个正确设置的url,例如:
url='jdbc:hive2://hiveserver:10000/default?hive.query.name=relevant'
builder = HiveWarehouseSession.session(self.spark)
builder.hs2url(url)
hive = builder.build()
hive.execute("select * from whatever")
它在第一个查询中运行良好,但在下一个查询中会重用相同的url(即使我尝试手动删除) builder
以及 hive
),因此不起作用。
第二种方法是设置 spark.sql.hive.thriftServer.singleSession=true
在spark thrift服务器上。这似乎是可行的,但我发现它是一个耻辱的限制全球Spark节俭服务器的好处只有一个应用程序。
有什么方法可以实现我想要的吗?也许有一种方法可以把一个查询固定到一个执行者,所以希望是一个会话?
暂无答案!
目前还没有任何答案,快来回答吧!