优化在火花中的蜂巢表加载时间



我正在研究一个火花流项目,其中传入的流与多个蜂巢表相连。因此,我将桌子加载到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张桌子每15分钟加载火花。所有人都有相同的行号逻辑。如何启用下降?因此,火花只能从Hive中获取所得数据。

您是否尝试过使用 max 函数而不是 row_num ?Row_num的使用可能是问题。我将使用以下查询:

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

有关更多详细信息,请参见 max 功能定义。

相关内容

  • 没有找到相关文章