2017-09-14 189 views
1

當前我試圖通過最新的date_processed過濾Hive表。在讀取Hive表之前過濾分區(Spark)

表被分區。

系統 DATE_PROCESSED 地區

我已經成功地過濾它的唯一辦法,是做一個連接查詢:

query = "select * from contracts_table as a join (select (max(date_processed) as maximum from contract_table as b) on a.date_processed = b.maximum" 

這種方式實在是費時,因爲我必須做的25個表的相同程序。

任何人知道的方式來直接讀取表的最新加載分區星火< 1.6

這是我使用閱讀方法。

public static DataFrame loadAndFilter (String query) 
{ 
     return SparkContextSingleton.getHiveContext().sql(+query); 
} 

非常感謝!

回答

1

數據幀的所有表分區可以通過接收:

val partitionsDF = hiveContext.sql("show partitions TABLE_NAME") 

值可以被解析,爲獲得最大的價值。

+0

我認爲這可以工作,並提高性能,但實際上並沒有完全解決問題,因爲你鋼需要加載20個新的數據幀,計算最大值,然後過濾其他表....任何生病嘗試它,並看看錶現如何。謝謝! –