선택적 구성요소 기능을 사용하여 Dataproc 클러스터를 만들 때 Delta Lake와 같은 추가 구성요소를 설치할 수 있습니다. 이 페이지에서는 Dataproc 클러스터에 Delta Lake 구성요소를 선택적으로 설치하는 방법을 설명합니다.
Dataproc 클러스터에 설치하면 Delta Lake 구성요소가 Delta Lake 라이브러리를 설치하고 클러스터에서 Delta Lake와 작동하도록 Spark 및 Hive를 구성합니다.
호환되는 Dataproc 이미지 버전
Delta Lake 구성요소는 Dataproc 이미지 버전 2.2.46 이상 이미지 버전으로 생성된 Dataproc 클러스터에 설치할 수 있습니다.
Dataproc 이미지 출시에 포함된 Delta Lake 구성요소 버전은 지원되는 Dataproc 버전을 참고하세요.
Delta Lake 관련 속성
Delta Lake 구성요소가 사용 설정된 Dataproc 클러스터를 만들면 다음 Spark 속성이 Delta Lake와 함께 작동하도록 구성됩니다.
구성 파일 | 속성 | 기본값 |
---|---|---|
/etc/spark/conf/spark-defaults.conf |
spark.sql.extensions |
io.delta.sql.DeltaSparkSessionExtension |
/etc/spark/conf/spark-defaults.conf |
spark.sql.catalog.spark_catalog |
org.apache.spark.sql.delta.catalog.DeltaCatalog |
구성요소 설치
Google Cloud 콘솔, Google Cloud CLI 또는 Dataproc API를 사용하여 Dataproc 클러스터를 만들 때 구성요소를 설치합니다.
콘솔
- Google Cloud 콘솔에서 Dataproc 클러스터 만들기 페이지로 이동합니다.
클러스터 설정 패널이 선택되었습니다.
- 구성요소 섹션의 선택적 구성요소에서 클러스터에 설치할 Delta Lake 및 기타 선택적 구성요소를 선택합니다.
gcloud CLI
Jupyter 구성요소가 포함된 Dataproc 클러스터를 만들려면 gcloud dataproc clusters create 명령어를 --optional-components
플래그와 함께 사용합니다.
gcloud dataproc clusters create CLUSTER_NAME \ --optional-components=DELTA \ --region=REGION \ ... other flags
참고:
- CLUSTER_NAME: 클러스터의 이름을 지정합니다.
- REGION: 클러스터가 위치할 Compute Engine 리전을 지정합니다.
REST API
Delta Lake 구성요소는 SoftwareConfig.Component를 clusters.create 요청에 사용하여 Dataproc API를 통해 지정할 수 있습니다.
사용 예시
이 섹션에서는 Delta Lake 테이블을 사용한 데이터 읽기 및 쓰기 예시를 제공합니다.
Delta Lake 테이블
Delta Lake 테이블에 쓰기
Spark DataFrame을 사용하여 Delta Lake 테이블에 데이터를 쓸 수 있습니다. 다음 예시에서는 샘플 데이터로 DataFrame
을 만들고 Cloud Storage에서 my_delta_table
Delta Lake 테이블을 만든 다음 Delta Lake 테이블에 데이터를 씁니다.
PySpark
# Create a DataFrame with sample data.
data = spark.createDataFrame([(1, "Alice"), (2, "Bob")], ["id", "name"])
# Create a Delta Lake table in Cloud Storage.
spark.sql("""CREATE TABLE IF NOT EXISTS my_delta_table (
id integer,
name string)
USING delta
LOCATION 'gs://delta-gcs-demo/example-prefix/default/my_delta_table'""")
# Write the DataFrame to the Delta Lake table in Cloud Storage.
data.writeTo("my_delta_table").append()
Scala
// Create a DataFrame with sample data.
val data = Seq((1, "Alice"), (2, "Bob")).toDF("id", "name")
// Create a Delta Lake table in Cloud Storage.
spark.sql("""CREATE TABLE IF NOT EXISTS my_delta_table (
id integer,
name string)
USING delta
LOCATION 'gs://delta-gcs-demo/example-prefix/default/my_delta_table'""")
// Write the DataFrame to the Delta Lake table in Cloud Storage.
data.write.format("delta").mode("append").saveAsTable("my_delta_table")
Spark SQL
CREATE TABLE IF NOT EXISTS my_delta_table (
id integer,
name string)
USING delta
LOCATION 'gs://delta-gcs-demo/example-prefix/default/my_delta_table';
INSERT INTO my_delta_table VALUES ("1", "Alice"), ("2", "Bob");
Delta Lake 테이블에서 읽기
다음 예시에서는 my_delta_table
을 읽고 콘텐츠를 표시합니다.
PySpark
# Read the Delta Lake table into a DataFrame.
df = spark.table("my_delta_table")
# Display the data.
df.show()
Scala
// Read the Delta Lake table into a DataFrame.
val df = spark.table("my_delta_table")
// Display the data.
df.show()
Spark SQL
SELECT * FROM my_delta_table;
Delta Lake를 사용한 Hive
Hive의 Delta 테이블에 씁니다.
Dataproc Delta Lake 선택적 구성요소는 Hive 외부 테이블과 호환되도록 사전 구성되어 있습니다.
자세한 내용은 Hive 커넥터를 참고하세요.
Beeline 클라이언트에서 예시를 실행합니다.
beeline -u jdbc:hive2://
Spark Delta Lake 테이블을 만듭니다.
Hive 외부 테이블에서 Delta Lake 테이블을 참조하려면 먼저 Spark를 사용하여 Delta Lake 테이블을 만들어야 합니다.
CREATE TABLE IF NOT EXISTS my_delta_table (
id integer,
name string)
USING delta
LOCATION 'gs://delta-gcs-demo/example-prefix/default/my_delta_table';
INSERT INTO my_delta_table VALUES ("1", "Alice"), ("2", "Bob");
Hive 외부 테이블을 만듭니다.
SET hive.input.format=io.delta.hive.HiveInputFormat;
SET hive.tez.input.format=io.delta.hive.HiveInputFormat;
CREATE EXTERNAL TABLE deltaTable(id INT, name STRING)
STORED BY 'io.delta.hive.DeltaStorageHandler'
LOCATION 'gs://delta-gcs-demo/example-prefix/default/my_delta_table';
참고:
io.delta.hive.DeltaStorageHandler
클래스는 Hive 데이터 소스 API를 구현합니다. Delta 테이블을 로드하고 메타데이터를 추출할 수 있습니다.CREATE TABLE
문에 있는 테이블 스키마가 기본 Delta Lake 메타데이터와 일치하지 않으면 오류가 발생합니다.
Hive의 Delta Lake 테이블에서 읽습니다.
Delta 테이블에서 데이터를 읽으려면 SELECT
문을 사용합니다.
SELECT * FROM deltaTable;
Delta Lake 테이블을 삭제합니다.
Delta 테이블을 삭제하려면 DROP TABLE
문을 사용합니다.
DROP TABLE deltaTable;