Hive 具有多个联接的大型查询引发Stackoverflow异常

Hive 具有多个联接的大型查询引发Stackoverflow异常,hive,hiveql,hortonworks-data-platform,Hive,Hiveql,Hortonworks Data Platform,我需要查询大量联接的结果。目前,列的数量应该会从大约30个连接中产生大约339列和5亿行。但是,此查询在Beeline CLI中引发Stackoverflow异常。我目前为配置单元堆大小设置了10G Error: Error running query: java.lang.StackOverflowError (state=,code=0) 到目前为止我已经改变了 hive.fetch.task.conversion = none 及 基于我在网上找到的建议,但没

我需要查询大量联接的结果。目前,列的数量应该会从大约30个连接中产生大约339列和5亿行。但是,此查询在Beeline CLI中引发Stackoverflow异常。我目前为配置单元堆大小设置了10G

    Error: Error running query: java.lang.StackOverflowError 
    (state=,code=0)
到目前为止我已经改变了

    hive.fetch.task.conversion = none

基于我在网上找到的建议,但没有乐趣

每当我减少行数或连接数时,我不会得到这个错误。但即使只有10000行,我也会再次犯错误

我的查询与此类似

    select * from schema1.view_1
    JOIN `schema1`.`table1` ON (`view1`.`column1` = `table1`.`column1`)
    JOIN `schema1`.`table2` ON (`view1`.`column2` = `table2`.`column2`)
    JOIN `schema1`.`table3` ON (`view1`.`column3` = `table3`.`column3`)
    ...
    JOIN `schema2`.`table4` ON (`view1`.`column1` = `table4`.`column1`)
    JOIN `schema2`.`table5` ON (`view1`.`column2` = `table5`.`column2`)
    JOIN `schema2`.`table6` ON (`view1`.`column3` = `table6`.`column3`)

我希望Tableau使用这个查询来创建提取并发布它。我知道Tableau可以像以前一样处理大量数据。好的,如果我能在直线上运行这个查询,我很高兴。有什么建议吗?

提示:了解“堆栈”和“堆”的区别。如果您希望开发计算机程序,这可能会很有用。然后谷歌搜索哪些Java系统属性控制堆栈大小。然后与您的系统管理员联系,请求更改HiveServer2启动配置。从更全局的角度来看:报表工具(如Tableau、Business Objects等)总是生成这种难以置信的复杂查询(我见过更糟的情况)。Oracle和Microsoft为此付出了巨大的努力,以便他们的查询优化人员能够解决SQL的问题并制定有效的执行计划;即使有一个最佳的计划,它也往往是不切实际的——这就是为什么有数据集市来预计算查询的一部分。因此,你不能指望开源产品免费为你提供一个好的SQL查询优化器,所以你应该像1994年以来运行数据仓库的其他人一样:构建数据集市并在这些数据集市之上使用Tableau。因为“暴力”并不总是一个解决方案。嘿,伙计,谢谢你的提示。你是对的,这主要是我的建模问题。这需要我做一些工作,但我相信这是唯一的出路。再次感谢。
    select * from schema1.view_1
    JOIN `schema1`.`table1` ON (`view1`.`column1` = `table1`.`column1`)
    JOIN `schema1`.`table2` ON (`view1`.`column2` = `table2`.`column2`)
    JOIN `schema1`.`table3` ON (`view1`.`column3` = `table3`.`column3`)
    ...
    JOIN `schema2`.`table4` ON (`view1`.`column1` = `table4`.`column1`)
    JOIN `schema2`.`table5` ON (`view1`.`column2` = `table5`.`column2`)
    JOIN `schema2`.`table6` ON (`view1`.`column3` = `table6`.`column3`)