在spark中优化配置单元表加载时间

vybvopom  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(339)

我正在进行一个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获取结果数据。

oknrviil

oknrviil1#

你试过用max函数代替row\u num吗?使用row_num可能是问题所在。我将使用以下查询:

val df = sql("select *, MAX(date) over (partition by a , b , c, d) from test")

有关详细信息,请参见max函数定义。

相关问题