2017-09-14 2 views
1

현재 하이브 테이블을 최신 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" 

이 방법은 다음과 같습니다 지역

내가 그것을 필터링 관리했습니다 유일한 방법 date_processed

시스템 은 조인 쿼리를 수행하여입니다 25 개의 테이블에 대해 동일한 절차.

는 모든 일이 내가 읽을 사용하고하는 방법입니다 스파크 < 1.6

에서 직접 테이블의 최신로드 파티션을 읽을 수있는 방법을 알고있다.

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

많은 감사! 모든 테이블 파티션

답변

1

Dataframe는 수신 할 수 있습니다

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

값은 구문 분석 할 수에 대한 최대 값을 가져옵니다.

+0

나는 20 개의 새로운 DataFrames를로드하고, 최대 값을 계산 한 다음 다른 테이블을 필터링해야 할 필요가 있기 때문에 성능이 향상되고 실제로는 문제를 해결할 수 없다고 생각합니다. 성능이 어떻게되는지보십시오. 감사! –

관련 문제