现在,我正在测试Spark SQL,就像Microsoft Power BI的查询引擎一样。 我有什么:
create table data using org.apache.spark.sql.cassandra options (cluster 'Cluster', keyspace 'myspace', table 'data')
;
在我尝试将Power BI连接到Spark之前一切正常。问题是Power BI正试图从巨大的Cassandra表中获取所有数据。显然,Spark Thrift Server因OOM错误而崩溃。在这种情况下,我无法将内存添加到Spark Thrift Server,因为带有原始数据的Cassandra表非常庞大。另外,我不能依赖BI侧的自定义初始查询,因为每次用户忘记设置此查询服务器都会崩溃。 我看到的最好的方法是在某种
中自动包装来自BI的所有查询SELECT * FROM (... BI select ...) LIMIT 1000000
对于当前的用例是可以的。 那么,它可以在服务器端吗?我怎么能这样做? 如果没有,我怎么能阻止Spark Thrift Server崩溃?在获得OOM之前是否有可能丢弃或取消大量查询? 感谢。
答案 0 :(得分:1)
好的,我发现了一个解决我问题的神奇配置选项:
spark.sql.thriftServer.incrementalCollect =真
设置此选项后,Spark会将耗费量大的查询提取的数据拆分为块