Hive와 호환되는 카탈로그 : Persistent 카탈로그로, 세션 종료 후에도 테이블, 뷰 유지
테이블 관리 방식
테이블은 데이터베이스라는 폴더와 같은 구조로 관리
2단계 구조 : 데이터베이스 -> 테이블
테이블 유형
메모리 기반 테이블/뷰
임시 테이블로, 세션 중에만 유효
세션 종료시 사라짐
예시
# 메모리 기반 임시 테이블 생성 예시
data = [(1, 'Alice'), (2, 'Bob')]
df = spark.createDataFrame(data, ['id', 'name'])
# DataFrame을 메모리 기반 테이블로 등록
df.createOrReplaceTempView("memory_table")
# 메모리 기반 테이블에 대한 SQL 쿼리 실행
result = spark.sql("SELECT * FROM memory_table WHERE id = 1")
result.show()
스토리지 기반 테이블
기본적으로 HDFS와 Parquet 포맷을 사용하여 데이터 저장
Hive와 호환되는 메타스토어 사용
종류
Managed Table
데이터와 메타데이터 모두 Spark가 관리
테이블 삭제 시 데이터도 함께 삭제
UnManaged(External) Table
데이터는 외부에서 관리하고 Spark는 메타데이터만 관리
테이블 삭제 시 데이터 삭제 X
예시
# Managed Table 생성 예시
spark.sql("CREATE TABLE managed_table (id INT, name STRING) USING parquet")
# 데이터 삽입
spark.sql("INSERT INTO managed_table VALUES (1, 'Alice'), (2, 'Bob')")
# 테이블 삭제
spark.sql("DROP TABLE managed_table") # 테이블 삭제 시, 데이터도 함께 삭제됨
# External Table 생성 예시
spark.sql("""
CREATE TABLE external_table (id INT, name STRING)
USING parquet
LOCATION '/path/to/external/data'
""")
# 데이터 삽입 (외부 파일 경로에 저장)
spark.sql("INSERT INTO external_table VALUES (1, 'Alice'), (2, 'Bob')")
# 테이블 삭제
spark.sql("DROP TABLE external_table") # 테이블 삭제 시, 데이터는 삭제되지 않음