강의
카탈로그
"카탈로그"는 테이블과 뷰에 관한 메타 데이터를 관리합니다.
- 메모리 기반 카탈로그 기본
- 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 |