데브코스 TIL/빅데이터, 스트리밍 데이터 처리

Hive 메타 스토어

예니ㅣ 2024. 1. 17. 17:18

강의

카탈로그

"카탈로그"는 테이블과 뷰에 관한 메타 데이터를 관리합니다.

  • 메모리 기반 카탈로그 기본
  • Hive 호환 카탈로그 제공 : Persistent
  • 데이터베이스를 통해 테이블을 폴더 구조로 관리

 

테이블 종류

  • 메모리 기반 테이블/뷰
    • 임시 테이블
  • 스토리지 기반 테이블
    • HDFS Parquet 포맷 사용
    • Hive 호환 메타스토어 사용
    • 테이블 종류
      • Managed Table : 실제 데이터 및 메타 데이터 관리
      • Unmanaged(External) Table : 메타 데이터 관리

 


Hive 메타 스토어 구현

스토리지 기반 카탈로그

  • SparkSession 생성시 enableHiveSupport() 호출
  • default 데이터베이스 생성

 

Managed Table

  • 테이블 생성
    • daaframe.saveAsTable(table_name)
    • SQL 문법 사용 (CTAS)
  • spark.sql.warehouse.dir에 저장 : PARQUET 기본

 

External Table

  • HDFS에 존재하는 데이터에 스키마 정의 : LOCATION 프로퍼티 사용
  • 메타 데이터만 카탈로그에 기록
CREATE TABLE table_name(
)
USING PARQUET
LOCATION "hdfs_path";

 

 


실습

# 파일 다운로드
!wget https://s3-geospatial.s3.us-west-2.amazonaws.com/orders.csv
from pyspark.sql import SparkSession

spark = SparkSession \
    .builder \
    .appName("Python Spark Hive") \
    .enableHiveSupport() \
    .getOrCreate()
    
df = spark.read.csv("orders.csv", inferSchema=True, header=True, sep ='\t')

spark.sql("CREATE DATABASE IF NOT EXISTS TEST_DB")
spark.sql("USE TEST_DB")
spark.sql("SHOW DATABASES").show()

df.write.saveAsTable("TEST_DB.orders", mode="overwrite")

spark.sql("""
    DROP TABLE IF EXISTS TEST_DB.orders_count;
    """)
    
spark.sql("""
    CREATE TABLE TEST_DB.orders_count AS 
    SELECT order_id, COUNT(1) as count 
    FROM TEST_DB.orders
    GROUP BY 1
    """)
    
spark.sql("""
    SELECT * 
    FROM test_db.orders_count 
    LIMIT 10
    """).show()

'데브코스 TIL > 빅데이터, 스트리밍 데이터 처리' 카테고리의 다른 글

Spark 파일 포맷  (0) 2024.01.18
Spark Unit Test  (0) 2024.01.17
Spark SQL 실습 3  (0) 2024.01.17
Spark SQL 실습 1  (0) 2024.01.17
Spark SQL 소개  (0) 2024.01.17