[Spark] 4. Database & Table

2024. 12. 3. 00:16·데이터/Spark

Spark에서의 데이터베이스 & 테이블 관리

Catalog

  • Spark에서 테이블과 뷰에 대한 메타데이터를 관리하는 시스템
    • 메모리 기반 카탈로그 : Spark 세션이 끝나면 메타데이터가 사라짐
    • 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")  # 테이블 삭제 시, 데이터는 삭제되지 않음

 

저작자표시 (새창열림)

'데이터 > Spark' 카테고리의 다른 글

[Spark] 6. Spark Execution Plan  (1) 2024.12.03
[Spark] 5. File Format  (0) 2024.12.03
[Spark] 3. Spark SQL  (1) 2024.12.02
[Spark] 2. Spark Session  (0) 2024.12.02
[Spark] 1. Spark?  (2) 2024.11.28
'데이터/Spark' 카테고리의 다른 글
  • [Spark] 6. Spark Execution Plan
  • [Spark] 5. File Format
  • [Spark] 3. Spark SQL
  • [Spark] 2. Spark Session
김줘
김줘
김줘와 같이 데이터, 컴퓨터, IT 공부
  • 김줘
    초보개발자 김줘의 코딩일기
    김줘
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 데이터 엔지니어링 데브코스
      • 데이터
        • Airflow
        • Spark
        • Kafka
        • dbt
      • TroubleShooting
      • Docker
      • AWS
      • 크롤링, 스크래핑, 시각화
        • Selenium
        • 시각화
      • 코딩테스트
        • 프로그래머스
        • 입출력과 사칙연산
        • 정렬
      • Django
      • 자바 공부
      • 끄적끄적
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    cloud
    프로그래머스
    데이터 엔지니어
    초보개발자
    데이터 엔지니어링 데브코스
    Python
    TiL
    티스토리챌린지
    데이터 엔지니어링 데브코스 4기
    에어플로우
    프로그래밍
    자바
    오블완
    Airflow
    부트캠프
    파이썬
    Java
    데브코스
    Azure
    aws
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
김줘
[Spark] 4. Database & Table
상단으로

티스토리툴바