[HADOOP] HIVE QL의 테이블에 열 추가
HADOOPHIVE QL의 테이블에 열 추가
HIVE에 1300 개의 행과 6 개의 열로 구성된 표를 작성하는 코드를 작성했습니다.
create table test1 as SELECT cd_screen_function,
SUM(access_count) AS max_count,
MIN(response_time_min) as response_time_min,
AVG(response_time_avg) as response_time_avg,
MAX(response_time_max) as response_time_max,
SUM(response_time_tot) as response_time_tot,
COUNT(*) as row_count
FROM sheet WHERE ts_update BETWEEN unix_timestamp('2012-11-01 00:00:00') AND
unix_timestamp('2012-11-30 00:00:00') and cd_office = '016'
GROUP BY cd_screen_function ORDER BY max_count DESC, cd_screen_function;
이제 모든 1300 행에 대해 하나의 고유 한 값으로 구성된 access_count1로 다른 열을 추가하고 값은 sum (max_count)이됩니다. max_count는 기존 테이블의 열입니다. 내가 어떻게 할 수 있니? 나는이 코드에 의해 테이블을 변경하려고 노력하고있다. ALTER TABLE test1 Add COLUMNS (access_count1 int) set default sum (max_count);
해결법
-
==============================
1.하이브에 기본값이있는 열을 추가 할 수 없습니다. ALTER TABLE test1 ADD COLUMNS (access_count1 int) 열을 추가하는 올바른 구문을 사용하면 기본 합계 (max_count)를 제거하면됩니다. 열을 추가 한 결과 테이블을 백업하는 해당 파일은 변경되지 않습니다. Hive는 NULL을 해당 열의 모든 셀에 대한 값으로 해석하여 누락 된 데이터를 처리합니다.
하이브에 기본값이있는 열을 추가 할 수 없습니다. ALTER TABLE test1 ADD COLUMNS (access_count1 int) 열을 추가하는 올바른 구문을 사용하면 기본 합계 (max_count)를 제거하면됩니다. 열을 추가 한 결과 테이블을 백업하는 해당 파일은 변경되지 않습니다. Hive는 NULL을 해당 열의 모든 셀에 대한 값으로 해석하여 누락 된 데이터를 처리합니다.
이제는 열을 채울 필요가 있다는 문제가 생겼습니다. 불행히도 하이브에서는 본질적으로 전체 테이블을 다시 작성해야하며 이번에는 채워진 열로 채워야합니다. 새 열을 사용하여 원래 쿼리를 다시 실행하는 것이 더 쉬울 수 있습니다. 또는 지금 가지고있는 테이블에 열을 추가 한 다음 모든 열과 새 열의 값을 선택할 수 있습니다.
또한 컬럼을 원하는 기본값으로 항상 공백으로 채우고 지금 NULL로 남겨 둘 수 있습니다. 이 옵션은 NULL이 원하는 기본값과 별개의 의미를 갖도록하려는 경우 실패합니다. 또한 항상 COALESCE를 기억하는 데 의존해야합니다.
Hive를 뒷받침하는 파일을 처리 할 수있는 능력이 매우 자신있는 경우 직접 파일을 변경하여 기본값을 추가 할 수도 있습니다. 일반적으로 나는 대부분의 시간이 더 천천히 그리고 더 위험하기 때문에 이것을 반대하는 것이 좋습니다. 그래도 이해가가는 경우가있을 수 있으므로이 옵션을 완전성을 위해 포함 시켰습니다.
from https://stackoverflow.com/questions/19589489/add-a-column-in-a-table-in-hive-ql by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 타임 스탬프에 따라 HDFS 디렉토리의 파일을 나열하는 hdfs 명령이 있습니까? (0) | 2019.07.05 |
---|---|
[HADOOP] Hadoop 배포판의 차이점 (0) | 2019.07.05 |
[HADOOP] 사용자 정의 맵 하이브의 프로그램 줄이기, 규칙이란 무엇입니까? 입력과 출력은 어떻습니까? (0) | 2019.07.05 |
[HADOOP] 공정 및 용량 스케줄러의 차이점은 무엇입니까? (0) | 2019.07.05 |
[HADOOP] 실행중인 Hadoop 클러스터에 노드를 추가하는 방법이 있습니까? (0) | 2019.07.05 |