Apache Hudi를 사용해서 Hudi 테이블을 만들어서 운영할 때 Hudi 테이블을 Hive 테이블로도 만들어서 사용하고 싶을 수 있다.
Apache Hudi에 대한 소개는 이곳은 참고 : Apache Hudi 소개
일단 Hive 테이블로도 만들어두면 데이터를 확인하는 것이 간편하다.
Hive Metastore에 테이블을 등록해두면 Spark 또는 Hive로 덜 번거롭게 데이터를 확인해볼 수 있기 때문이다.
Hive Sync를 한다는 것은 Hudi 테이블 경로를 location으로 하는 Hive 테이블을 생성하거나 스키마를 동기화한다는 것을 의미한다.
Hudi 테이블 데이터를 복제하여 새롭게 Hive 테이블용 데이터를 생성하고 복제된 데이터를 location으로 하는 Hive 테이블을 만든다는 것은 아니다.
하지만 Hudi 테이블 경로의 데이터 구조를 보면 일반적인 Hive 테이블과는 구조가 다르기 때문에,
Hive가 처리할 수 있도록 관련된 Hudi 라이브러리를 Hive에 설정해야 한다.
# Hive 서버에 라이브러리 추가
hive-site.xml 파일 hive.aux.jars.path 값에 hudi-hadoop-mr-bundle-0.x.x-SNAPSHOT.jar 파일을 추가해야 한다.
가이드 문서 : https://hudi.apache.org/docs/syncing_metastore/#hive-environment
# 동기화 처리
동기화 방식에는 두 가지 방법이 있는데 이 중에서 적합한 방식으로 선택해 사용하면 될 것 같다.
Sync Tool 사용
별도로 제공하는 동기화 스크립트를 사용해서 동기화하는 방식이다.
가이드 문서 : https://hudi.apache.org/docs/syncing_metastore/#hive-sync-tool
Hudi 처리 시 동기화 하는 방법
Hudi insert, upsert 등의 처리 시 동기화를 같이 처리하는 방법이다.
처리 시 필요한 옵션값들을 같이 설정해주어야 한다.
jdbc를 통한 동기화 시는 다음과 같은 항목들을 넣어주어야 하는데, 다른 방식은 가이드 문서를 참고해서 관련 값들을 설정하면 된다.
key | 설명 |
hoodie.datasource.hive_sync.partition_fields | hive 테이블 파티션 컬럼으로 사용할 필드 |
hoodie.datasource.hive_sync.table | sync 할 hive 테이블명 |
hoodie.datasource.hive_sync.jdbcurl | hive sync 처리할 hive 서버 url (Hudi 라이브러리 설정된 서버여야함) |
hoodie.datasource.hive_sync.enable | hive sync 여부 (디폴트 FALSE) |
hoodie.datasource.hive_sync.mode | sync 방식 (hms, jdbc, hiveql) |
설정값에 대한 가이드 문서 : https://hudi.apache.org/docs/configurations
위와 같이 처리하고 나면 최초에는 Hive 테이블이 생성되고, 이후에는 스키마가 업데이트 된 것을 확인할 수 있을 것이다.
생성된 Hive 테이블에서 데이터를 Hive 서버를 통해 조회할 때는 마찬가지로 Hudi 라이브러리가 설정된 Hive 서버를 이용해야 가능하다.
'개발 > Data Engineering' 카테고리의 다른 글
HDFS file count 조회 (0) | 2022.05.09 |
---|---|
Apache Airflow 재수행 방법 정리 (0) | 2022.04.21 |
Apache Airflow DAG 간의 dependency 설정 (0) | 2022.01.25 |
Apache Hudi 소개 - HDFS upsert/delete (0) | 2021.07.11 |
Avro와 Parquet (0) | 2021.06.24 |