2016-06-14 2 views
0

하이브에 동일한 스키마가있는 두 개의 테이블이 있습니다.하이브의 문에서 업데이트

update x from tbl1 x,tbl2 y 
set x.c=y.c 
where x.a=y.a 
and x.b=y.b 

을 다음 그러나이 하이브에 실행되지 않은 것처럼

tbl1(a,b,c) 
tbl2(a,b,c) 

나는 TBL1를 업데이트합니다. 이것을 달성하는 가장 좋은 방법은 무엇입니까?

답변

0

댓글에 약간 깁니다.

하이브는 (적어도 update 문과 함께) 다른 테이블의 값을 사용하여 하나의 테이블을 업데이트하는 것을 지원하지 않습니다. 문에 대한 syntax

은 다음과 같습니다

UPDATE tablename 
    SET column = value [, column = value ...] 
    [WHERE expression] 

는 특히, value는 하위 쿼리 할 수 ​​없습니다

하이브가 select 절에서 지원하는 식이어야 할당 된 값입니다. 따라서 산술 연산자, UDF, 캐스트, 리터럴 등 이 지원됩니다. 하위 쿼리는 지원되지 않습니다.

where 절에 하위 쿼리가 허용됩니다.

+0

어떻게 효율적으로이 작업을 수행 할 수 있습니까? – MysticForce

+0

기본적으로 모든 행을 업데이트하는 경우 새 테이블을 만들기 위해 쿼리를 작성하는 옵션이 있습니다. –

+0

a, b 열도 tbl2, 즉 x.a = y.a 및 x.b = y.b 인 행만 업데이트합니다. – MysticForce