簡體   English   中英

在火花中優化Hive表加載時間

[英]Optimize Hive table loading time in spark

我正在開發一個火花流項目,其中傳入流與多個Hive表連接。 所以我在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)錯誤。

我應該使用上面的查詢創建Hive視圖並在spark中調用視圖,以便獲取結果數據。 我不知道它是否有效。

大約有10張桌子每15分鍾加載一次火花。 所有都具有相同的行號邏輯。 如何啟用下推? 所以spark只能從Hive中獲取結果數據。

您是否嘗試過使用MAX功能而不是ROW_NUM 使用ROW_NUM可能是個問題。 我會使用以下查詢:

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

有關詳細信息,請參閱MAX函數定義

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM