[HADOOP] 추가 열 새로운 외부 테이블에 2 개 하이브 외부 테이블의 데이터를 삽입
HADOOP추가 열 새로운 외부 테이블에 2 개 하이브 외부 테이블의 데이터를 삽입
다음과 같이 나는이 개 외부 하이브 테이블을 가지고있다. 나는 Sqoop을 사용하여 오라클에서 그 데이터를 채워왔다.
create external table transaction_usa
(
tran_id int,
acct_id int,
tran_date string,
amount double,
description string,
branch_code string,
tran_state string,
tran_city string,
speendby string,
tran_zip int
)
row format delimited
stored as textfile
location '/user/stg/bank_stg/tran_usa';
create external table transaction_canada
(
tran_id int,
acct_id int,
tran_date string,
amount double,
description string,
branch_code string,
tran_state string,
tran_city string,
speendby string,
tran_zip int
)
row format delimited
stored as textfile
location '/user/stg/bank_stg/tran_canada';
가있는 테이블에서 어떤 데이터가를 확인하기 위해 위의 두 테이블로하지만 1 추가 열이 모두 같은 필드가 1 개 외부 하이브 테이블에서와 같이 지금은 두 테이블의 데이터 위에 병합 할. SOURCE_TABLE과 같은 추가 열이있는 새로운 외부 테이블. 다음과 같이 새 외부 테이블입니다.
create external table transaction_usa_canada
(
tran_id int,
acct_id int,
tran_date string,
amount double,
description string,
branch_code string,
tran_state string,
tran_city string,
speendby string,
tran_zip int,
source_table string
)
row format delimited
stored as textfile
location '/user/gds/bank_ds/tran_usa_canada';
내가 어떻게 해.?
해결법
-
==============================
1.각 테이블에서 선택하고 이러한 결과를 UNION 모든 작업을 수행하고 마지막으로 세 번째 테이블에 결과를 삽입 않습니다.
각 테이블에서 선택하고 이러한 결과를 UNION 모든 작업을 수행하고 마지막으로 세 번째 테이블에 결과를 삽입 않습니다.
아래는 최종 하이브 쿼리는 다음과 같습니다
INSERT INTO TABLE transaction_usa_canada SELECT tran_id, acct_id, tran_date, amount, description, branch_code, tran_state, tran_city, speendby, tran_zip, 'transaction_usa' AS source_table FROM transaction_usa UNION ALL SELECT tran_id, acct_id, tran_date, amount, description, branch_code, tran_state, tran_city, speendby, tran_zip, 'transaction_canada' AS source_table FROM transaction_canada;
이 도움말을 희망!
-
==============================
2.당신은 아주 잘뿐만 아니라 수동 파티션에 의해 그것을 할 수 있습니다.
당신은 아주 잘뿐만 아니라 수동 파티션에 의해 그것을 할 수 있습니다.
CREATE TABLE transaction_new_table ( tran_id int, acct_id int, tran_date string, amount double, description string, branch_code string, tran_state string, tran_city string, speendby string, tran_zip int ) PARTITIONED BY (sourcetablename String)
그런 다음 명령 아래 실행,
load data inpath 'hdfspath' into table transaction_new_table partition(sourcetablename='1')
-
==============================
3.당신은 하이브의 절에 INSERT를 사용할 수 있습니다
당신은 하이브의 절에 INSERT를 사용할 수 있습니다
INSERT INTO TABLE table transaction_usa_canada SELECT tran_id, acct_id, tran_date, ...'transaction_usa' FROM transaction_usa; INSERT INTO TABLE table transaction_usa_canada SELECT tran_id, acct_id, tran_date, ...'transaction_canada' FROM transaction_canada;
from https://stackoverflow.com/questions/37299136/insert-data-of-2-hive-external-tables-in-new-external-table-with-additional-colu by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 코어 사이트 HDFS 현장 mapred-사이트와 실-site.xml 파일에 대한 속성을 가지고 있어야합니다 (0) | 2019.10.20 |
---|---|
[HADOOP] 찾거나 메인 클래스의 M을로드 할 수 없습니다 - 하둡 창을 (0) | 2019.10.20 |
[HADOOP] Runtime.exec의를 사용하여 자바에서 실행 하둡 jar 명령 (0) | 2019.10.20 |
[HADOOP] FILE 채널을 사용하여 수로의 여러 소스를 구성하는 동안 잠금 오류 채널 (0) | 2019.10.20 |
[HADOOP] 아파치 돼지, ELEPHANTBIRDJSON 로더 (0) | 2019.10.20 |