Trino์์ connector๋ iceberg์ hive๊ฐ ์กด์ฌํ๋ค.
hive์ iceberg๋ฅผ ๋ชจ๋ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐฉ์์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ด๋ค.
Hive ์ปค๋ฅํฐ์ ๊ฒฝ์ฐ ํด๋ ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ค. ์๋ฅผ ๋ค์ด์ day=20240101 ํด๋ ์์ ์๋ ๋ชจ๋ ํ์ผ์ด ํด๋น ํํฐ์
์ ๋ฐ์ดํฐ์ ํด๋นํ๋ค. ๊ทธ๋์ UPDATE/DELETE๊ฐ ์ด๋ ต๊ธฐ์ ํ๋ฒ ์์ด๋ฉด ์ ๋ณํ๋ ๋ก๊ทธ๋ ๋ฐฑ์
ํ
์ด๋ธ์ ์ฃผ๋ก appendํ๋ค. hive๋ ๋ฉํ์คํ ์ด์ ๊ฐ์ ์ง์ ์ฝ๋๋ค. ๊ตฌ์กฐ๊ฐ ๋จ์ํด์ ๋์ค์ ๋ค๋ฅธ ์๋ฃจ์
(์: Spark, Python, ํน์ ๋ค๋ฅธ DB)์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฎ๊ธธ ๋ ํจ์ฌ ํธํ์ฑ์ด ์ข๋ค.
iceberg connector์ ๊ฒฝ์ฐ, ์ค๋
์ท ๋จ์๋ก ๊ด๋ฆฌํ๊ธฐ์ UPDATE/DELETE๊ฐ ์์ ๋กญ๊ณ Time Travel ๊ธฐ๋ฅ์ฒ๋ผ ๊ณผ๊ฑฐ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋๊ฒ ๊ฐ๋ฅํ๋ค. iceberg๋ iceberg ์ ์ฉ ๋ฉํ๋ฐ์ดํฐ ํ์ผ์ ์ฐพ์์ ํ์ผ์ ์ ํ๋๋ก ๋ฐ์ดํฐ๋ฅผ ์กฐํฉํด์ ์ฝ๋๋ค. ๋ฐ๋ผ์ ๋น ๋ฅด๊ฒ ์กฐํํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ์์ ํด์ผํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ์ง๋ง ๋ฉํ๋ฐ์ดํฐ๊ฐ ๊ผฌ์ด๋ฉด ๋ณต๊ตฌ๊ฐ ๋ณต์กํ๋ค.
Trino๋ ๋ฐ์ดํฐ๋ฅผ 3๊ณ์ธต์ผ๋ก ๊ด๋ฆฌํ๋ค.
- Catalog (์นดํ๋ก๊ทธ): ๋ค ์ค์ ํ์ผ ์ด๋ฆ (hive, iceberg)
- Schema (์คํค๋ง): ํํ ๋งํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค(DB) ์ด๋ฆ
- Table (ํ ์ด๋ธ): ์ค์ ๋ฐ์ดํฐ๊ฐ ๋ด๊ธด ํ
iceberg -> hive (โ)
์ฐ์ ๋จผ์ iceberg connector๋ก ๋ง๋ค์ด์ง ํ
์ด๋ธ์ hive connector๋ก ์ ์ ๋ถ๊ฐ๋ฅํ๋ค.
์๋์ฒ๋ผ ์ค๋ฅ ๋ฉ์ธ์ง๊ฐ ๋์จ๋ค. hive connector๋ iceberg์ ๋ณต์กํ ์ค๋
์ท ๊ตฌ์กฐ๋ฅผ ํด์ํ ๋ฅ๋ ฅ์ด ์๋ค.
SQL Error [133001]: Query failed (#20260401_074953_00144_wv8fq): Cannot query Iceberg table 'dw.tablename'
hive -> iceberg (โญ)
configmap์ ์๋ ์ค์ ์ ์ถ๊ฐํด์ฃผ๋ฉด iceberg ์ปค๋ฅํฐ๊ฐ ๋ด๊ฐ ๋ชจ๋ฅด๋ ์ ๋ณด๊ฐ ์์ผ๋ฉด hive ์นดํ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ๋ค๊ณ ์ฐ๊ฒฐํ๋ ์ํ๊ฐ ๋ผ์ iceberg ์นดํ๋ก๊ทธ ๊ฒฝ๋ก๋ก ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ ค๋ ์ค์ ๋ก๋ hive ์นดํ๋ก๊ทธ์ ์ ์๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋์ด์์ ๋ณด์ฌ์ค๋ค. iceberg ์ปค๋ฅํฐ๋ก ์กฐํ๋ ๋์ง๋ง, ๋จ์ select๋ง ๊ฐ๋ฅํ๋ค. hive catalog๋ฅผ iceberg ์ชฝ์ ๋ธ๋ฆฟ์งํด๋ ๊ฒฝ์ฐ์ด๋ค. catalog๋ฅผ ๋ฐ๊พธ์ง์์๋ ํธํ๊ฒ ๋ฐฑ์
๋ฐ ๊ฐ๋ฐ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์๋๋ก ํ๊ธฐ ์ํด์ ์ค์ ํด๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
iceberg.hive-catalog-name=hive
์ Hive connector๋ Update๋ Delete๊ฐ ์ ํ์ ์ผ๊น??
ํ์ผ์์คํ
์ผ๋ก์จ Hive๋ S3 ๊ฐ์ ์ค๋ธ์ ํธ ์คํ ๋ฆฌ์ง์ Parquet๋ ORC ๊ฐ์ ํ์ผ์ ์ฐจ๊ณก์ฐจ๊ณก ์์๋๋ ๋ฐฉ์์ด๋ค. ๊ทธ๋์ ์์ ํ๊ฑฐ๋ ์ญ์ ํ๋ ค๋ฉด ์ ์ฒด ํ์ผ์ ์๋ก ์ฐ๊ฑฐ๋ ๋ฎ์ด๋ฒ๋ ค์ผํ๋ค. Hive ACID ํ
์ด๋ธ์ ๊ฐ๋ฅํ์ง๋ง ์ค์ ์ด ๊น๋ค๋กญ๊ณ ์ฑ๋ฅ์ด ๋๋น ์ ๊ฑฐ์ ์ฌ์ฉํ์ง ์๋๋ค.
iceberg๋ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ฉด ๊ธฐ์กด ํ์ผ์ ๊ฑด๋๋ฆฌ์ง ์๊ณ , ์ด๋ค ๋ฐ์ดํฐ๊ฐ ์์ /์ญ์ ๋์๋์ง ๊ธฐ๋กํ๋ ์์ ํ์ผ(Delete Delta)์ ๋ฐ๋ก ๋ง๋ ๋ค. ๊ทธ๋์ ๋์ค์ ์กฐํํ ๋ ์ด ํ์ผ์ ํฉ์ณ์ ๋ณด์ฌ์ฃผ๊ธฐ์ S3 ํ์ผ์ ํต์งธ๋ก ๋ค์ ์ธ ํ์์์ด Update์ Delete๋ฅผ ํ ์ ์๋ค.
Hive connector๋ก ํ
์ด๋ธ์ ์์ฑํ๋ฉด ํ์ด๋ธ ๋ฉํ์คํ ์ด์ Owner(์์ ์) ์ ๋ณด๊ฐ ๊ธฐ๋ก๋๊ณ , Owner๊ฐ ์๋๋ผ๋ฉด Admin ๊ณ์ ์ด์ฌ๋ ํ
์ด๋ธ ์ญ์ ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค. ๊ทธ๋์ ์์ ๊ถ์ ๊ฐ์ ๋ก ๋ณ๊ฒฝํด์ค์ผ Drop์ด ๊ฐ๋ฅํ๋ค.
-- 1. ์์ ๊ถ์ admin์ผ๋ก ๊ฐ์ ๋ณ๊ฒฝ
ALTER TABLE hive.dw.table_name SET AUTHORIZATION admin;
-- 2. ์ด์ ์ญ์ ๊ฐ๋ฅ
DROP TABLE hive.dw.table_name;
'Dataops > Airflow์ Trino' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| Airflow์ Trino ๊ด๊ณ ๋ณด๊ธฐ (0) | 2026.03.01 |
|---|

