Data Engineering14 [Hive] Bucketing & Table Sampling Bucketing 큰 데이터를 더 관리하기 쉬운 작은 데이터 셋들로 분해하는 기술이다. 하나의 컬럼에 버켓팅 하면 만들고자하는 버켓의 개수에 따라 동일한 해쉬 값(컬럼 값에 Hash Function을 적용하여 만들고자 하는 버켓 개수로 나누면 Hash Index를 얻는다.)을 가진 레코드가 각각의 버켓으로 이동한다. ☆ 버켓팅을 단독으로 쓸 수도 있지만, 파티셔닝과 함께 사용하면 최고의 성능을 발휘한다. 하지만 그렇지 않은 경우도 있다. 예를 들어 500개의 레코드에 100개의 고유한 부서가 있을 경우, 파티셔닝을 하면 100개의 파티션이 만들어진다. 이런 경우 파티셔닝을 최적화에 도움이 되지 않는다. ☆ 파티션(디렉터리)과 달리 버켓은 실제 물리적인 파일이다. ☆ 데이터 셋에 따라 버켓 수를 명시적으로.. 2023. 12. 14. [Hive] 데이터베이스, 테이블 기본 명령어 데이터베이스 Hive는 실제 데이터베이스가 아니다. 실제 데이터는 HDFS에 저장되지만, 저장되는 데이터에 대한 메타 데이터를 관리하는 메타 스토어이다. 데이터베이스 생성 -- IF NOT EXISTS를 사용할 것을 권장한다. CREATE DATABASE IF NOT EXISTS d1; 데이터베이스 정보 보기 DESCRIBE DATABASE d1; 데이터베이스 COMMENT 달기 CREATE DATABASE IF NOT EXISTS d2 COMMENT 'this is a database'; DESCRIBE DATABASE EXTENDED d2; 데이터베이스 생성시 DBPROPERTIES 속성 넣기 (생성한 사람, 생성 일자) CREATE DATABASE IF NOT EXISTS d3 WITH DBPROP.. 2023. 12. 12. [Hive] Table Migration 하기 Hive Table Migration 1. 파티션 확인 show PARTITIONS ; 2. External에서만 drop 하기 (메타 데이터 drop) ALTER TABLE DROP IF EXISTS PARTITION ( = ); ☆ 주의점 !! : 만약 EXTERNAL='FALSE' 설정시 테이블을 drop하면 실제 물리적 파일도 같이 삭제된다. 따라서 Internal에서 drop 하기 전에는 반드시 메타데이터와 실제 물리적 데이터의 연결을 해제해줘야 한다. ALTER TABLE SET TBLPROPERTIES('EXTERNAL' = 'TRUE'); 3. 테이블 이름 변경 ALTER TABLE RENAME TO ; 4. 기존 폴더에 있던 파일들을 새로 옮기려는 테이블의 경로로 물리적 파일을 Move .. 2023. 11. 26. [Hive] Beeline 쿼리 실행 쿼리 실행 명령행(CLI)에 쿼리를 직접 입력하여 실행 # -e : Query that should be executed. Double or single quotes enclose the query string. This option can be specified multiple times. beeline -e # single quotes beeline -e 'SELECT * FROM SOSS.DM_SAFE_IDEX_GRID' # dobule quotes beeline -e "SELECT * FROM SOSS.DM_SAFE_IDEX_GRID" 스크립트 파일로 실행 (비대화식 모드) # -f : Script file that should be executed. beeline -f # file SELECT .. 2023. 11. 26. 이전 1 2 3 4 다음