데이터 엔지니어링/Hive
-
Hive 테이블 문제점 및 대체제 알아보기 Hudi vs Iceberge vs delta lake 이해하고 비교해보기데이터 엔지니어링/Hive 2022. 11. 27. 17:20
이전 글에서 HQL을 사용해보았고 Compaction에 대해 포스팅을 할려고 했으나 compaction 시 에로사항이 많아서 포스팅을 하지 못한다고 판단하였고 대신에, hive 테이블의 문제점과 대체제에 대해 알아보는 시간을 가져보면 좋을 것 같아 이 글을 작성하게 되었습니다. Hive에서는 Hive Table을 만들어서 데이터를 관리하고, Hive Query을 이용하여 데이터를 조회하게 되는데, 여기서 오는 문제점에 대해 간단하게 알아보겠습니다. Hive Table 구조 Hive는 데이터를 관리할때 메타스토어(RDB) + 데이터(HDFS안에 있는 실제 데이터 파일) 로 나뉘어서 관리 됩니다. DB에서 파일이 어디에 있는지 어떤 데이터를 추출해야하는지 스키마나 파티션 이런 정보들을 관리하고 실제데이터는 ..
-
[Hive] Merge문 이해하기데이터 엔지니어링/Hive 2022. 10. 26. 20:13
Merge문을 사용하는 이유 merge문 은 match문과 unmatch문의 분기를 이용하여 내용을 합치는데 사용한다. hive에서 merge문의 matched로 update, delete를 사용하려면 transaction을 true로 설정한 테이블이여야한다. ANSI SQL문을 사용하여 쿼리를 작성 할 수 있다. Merge문 사용 메뉴얼 MERGE INTO AS T USING AS S ON WHEN MATCHED [AND ] THEN UPDATE SET WHEN MATCHED [AND ] THEN DELETE WHEN NOT MATCHED [AND ] THEN INSERT VALUES 실습 source table : 새로 생성된 데이터나 합치고 싶은 데이터 target_table : merge하고 싶은..
-
[Hive] Hive에서 Transaction이란?(component, 제약조건, delta폴더, staging 폴더, insert, update, delete)데이터 엔지니어링/Hive 2022. 10. 11. 22:32
Transaction이란? SQL 질의 문 INSERT/UPDATE/DELETE/MERGE문을 이용하여 데이터의 변화를 일으키는 행위를 말한다. Transaction compoenet Transaction 구성 요소는 ACID라고 하는 속성이 있다. 이 말을 요약하자면, 데이터가 틀리지 않고 유지 되어야 한다는 뜻이 된다. 즉, update, delete했는데 이상하게 반영되지 않아야 한다는 것으로 이해 하면 된다. Atomicity = 성공적으로 트랜잭션은 처리하고 성공적이지 않으면 처리하지 않음. Consistency = 트랜잭션이 분산 데이터를 일관된 상태에서 다른 일관된 상태로 전환해 주는지의 여부를 말함 Isolation = 트랜잭셩이 한꺼번에 동시에 운영되는 다른 트랜잭션과는 무관하게 실행 될..
-
[Hive] Partition이란?(add 추가, drop 삭제, show partitions 조회, partitions)데이터 엔지니어링/Hive 2022. 10. 11. 20:19
Hive에서 사용하는 partition이란? table을 만들 partition을 이용하여 폴더 구조를 세분화 해서 관리 할 수 있다. 폴더를 구조적으로 나눠주기 때문에 데이터 관리 측면에서 효율적이다. 다만, 너무 많은 뎁스를 가지는 partition은 쿼리 나 성능면에서 악영향을 줄 수 있기 때문에 적당한 뎁스를 설정하는게 중요하다. Partition 테이블 생성 CREATE TABLE if not exsits default.person( col1 INT, col2 STRING, col3 INT, col4 STRING ) PARTITIONED BY(depth1 int, depth2 int, depth3 int) -- depth STORED AS ORC LOCATION 'hdfs://{hadoop_do..
-
[Hive]Create table Location 알아보기데이터 엔지니어링/Hive 2022. 10. 6. 21:55
Location이란? hive에서 create table을 하게 되면 default path안에 데이터가 파일 형태로 생성이 되게 된다. Location은 hive 속성 default path로 설정이 되지만, create table시 작성하여 명시적으로 path를 지정 해 줄 수 있다. hive안에 S3 plugin이 내장되어 있어 바로 S3주소로 접근이 바로 가능하다. # hdfs location 설정하는 법 CREATE TABLE default.person( pid INT, name STRING, age INT, address STRING ) STORED AS ORC LOCATION 'hdfs://{hdfs-domain}:{port}/{path}'; -- CREATE TABLE WITH LOCATI..
-
[Hive] Hive query - Bucketing table 알아보기데이터 엔지니어링/Hive 2022. 10. 6. 21:50
Bucketing이란? CREATE [EXTERNAL] TABLE [if not exsits] default.person( col1 STRING, col2 STRING, col3 STRING, col4 STRING ) CLUSTERD BY (col1) STORED BY ([col1, col2] [ASC | DESC]) into 256 BUCKETS STORED AS ORC; hive에서는 파일 단위로 데이터를 관리하는데 데이터들를 하나의 파일에 몰아서 관리하는 것이 아니라 여러개의 파일로 나눠서 데이터를 관리하는 것. Bucketing은 관리용이하게 하거나 성능 개선을 위해 사용한다. Clustered라는 속성에 column_name을 지정해 두면 이 column_name을 캐싱하여 Bucketing기준..
-
[Hive] Hive Query Table 관련 sql 정리(create, drop, truncate table) - options(if not exists, file format)데이터 엔지니어링/Hive 2022. 10. 6. 20:57
Managed or Internal table create table 시에 아무 옵션을 주지 않으면 기본적으로 internal 또는 managed table로 생성이 된다. internal table은 drop table을 하게 되면 안에 있는 데이터도 같이 삭제 된다. CREATE [INTERNAL or MANAGED] TABLE default.person( pid INT, name STRING, age INT, address STRING ); External table external table은 location에 설정된 파일이 삭제 되지 않는다. external을 설정하지 않으면 default로 internal or managed table로 설정 된다. CREATE EXTERNAL TABLE de..
-
[Hive] 테이블 생성(create table, view table, internal or external table 차이점, aws s3로 location 설정하는 법, 파일 포맷 설정하는 법)데이터 엔지니어링/Hive 2022. 9. 19. 20:56
기본 구조 CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name -- (Note: TEMPORARY available in Hive 0.14.0 and later) [(col_name data_type [column_constraint_specification] [COMMENT col_comment], ... [constraint_specification])] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [A..