我正在进行一个spark流项目,其中传入流与多个配置单元表连接。所以我在spark中加载表并缓存它。
下面是给定的示例查询-
val df = sql("select * from (select *, row_number() over (partition by a , b , c, d order by date desc) row_num from test) tmp where tmp.row_num = 1")
这个表有99%的重复数据,所以我使用行号逻辑来区分。当我这么做的时候 df.explain(true)
下压没有条件。所以整个表都在内存中加载。这个表有数十亿的数据。这给了 FAILED_TO_UNCOMPRESS(5)
错误。
我是否应该使用上述查询创建配置单元视图,并在spark中调用该视图,以便它获取结果数据。我不知道是否有效。
大约有10张table每15分钟装一次spark。它们都有相同的行号逻辑。如何启用下推?所以spark只能从hive获取结果数据。
1条答案
按热度按时间oknrviil1#
你试过用max函数代替row\u num吗?使用row_num可能是问题所在。我将使用以下查询:
有关详细信息,请参见max函数定义。