SQL 테이블과 뷰
테이블은 데이터를 가집니다. 스파크는 각 테이블과 해당 데이터에 관련된 정보인 스키마,설명,테이블명,데이터베이스명,칼럼명,파티션,실제 데이터의 물리적 위치 등의 메타데이터를 가지고있으며, 해당 정보는 중앙 메타 스토어에 저장됩니다.
스파크는 별도 메타데이터를 생성하지 않고 기본적으로 /user/hive/warehouse에 있는 아파치 하이브 메타스토어를 사용하여 테이블에 대한 모든 메타데이터를 유지합니다. 이대 스파크 구성 변수 spark.sql.warehouse.dir을 로컬 또는 외부 분산 저장소로 설정하여 다른 위치로 기본 경로를 변경할 수 있습니다.
스파크의 관리형 테이블과 비관리형 테이블 차이
Spark는 관리형(managed or Internal Table)과 비관리형(unmanaged or External Table)이라는 두가지 유형의 테이블을 만들 수 있습니다. 관리형 테이블의 경우 스파크는 메타 데이터와 파일 저장소의 데이터를 모두 관리합니다.
이때 관리형 테이블을 사용하면 스파크는 모든 것을 관리하기 때문에 DROP TABLE <테이블명>과 같은 SQL 명령은 실제 저장소에 있는 데이터와 메타데이터를 모두 삭제합니다.
비관리형 테이블은 오직 메타데이터만 관리하고 카산드라와 같은 외부 데이터 소스에서 데이터를 직접 관리합니다.그래서 파일와 스키마를 따로 관리하기 좋습니다. 파일이 HDFS 상에 이미 있을 때 외부 테이블을 사용하고, 테이블이 삭제 되더라도 파일은 남아 있습니다.
[[Cassandra] 아파치 카산드라란?
Contents 1. 카산드라 개요 2. 카산드라 특징 3. 카산드라 장점 4. 카산드라 단점 5. 카산드라 데이터 구조 이번에 신규로 프로젝트를 진행하게 됬는데, 해당 프로젝트에서 카산드라를 사용하고 있다.
goyunji.tistory.com](https://goyunji.tistory.com/95)
SQL 데이터베이스와 테이블 생성하기
테이블은 데이터베이스 안에 존재합니다. 만약 스파크를 사용하여 default database 안에 테이블을 새로 생성하고 싶으면, 스파크 애플리케이션이나 노트북에서 SQL 명령어를 사용하여 실행할 수 있습니다. 예를들어 미국 항공 지연 데이터를 사용하여 관리형 및 비관리형 테이블을 모두 생성해보겠습니다.
관리형 테이블
from pyspark.sql import SparkSession
spark = (SparkSession
.builder
.appName("SpakrSQLExampleApp")
.enableHiveSupport() # Hive 지원 활성화
.getOrCreate())
spark.sql("CREATE DATABASE learn_spark_db")
spark.sql("USE learn_spark_db")
spark.sql("CREATE TABLE managed_us_delay_flights_tbl (date STRING, delay INT,distance INT,origin STRING,destination STRING)")
csv_file = "departuredelays.csv"
schema = "date STRING, delay INT,distance INT,origin STRING,destination STRING"
flights_df = spark.read.csv(csv_file,schema=schema)
flights_df.write.saveAsTable("managed_us_delay_flights_tbl")
비관리형 테이블
from pyspark.sql import SparkSession
spark = (SparkSession
.builder
.appName("SpakrSQLExampleApp")
.enableHiveSupport() # Hive 지원 활성화
.getOrCreate())
spark.sql("""
CREATE TABLE us_dealy_flights_tbl(
date STRING,
delay INT,
distance INT,
origin STRING,
destination STRING
)
USING csv OPTIONS (PATH 'departuredelays.csv')
""")
'Apache > Apache Spark' 카테고리의 다른 글
스파크 애플리케이션의 최적화 및 튜닝 (2) | 2023.09.07 |
---|---|
Spark SQL과 아파치 하이브 (5) | 2023.08.21 |
Spark SQL과 데이터 프레임 (0) | 2023.08.20 |
Spark DDL을 사용하여 dataframe 생성하기 (0) | 2023.08.04 |
Spark의 구조 확립 (0) | 2023.08.04 |