시작: 추가 데이터 수집 및 삽입
이 시작 문서에서는 Azure Databricks Notebook을 사용하여 추가 베이비 이름 데이터가 포함된 CSV 파일을 Unity 카탈로그 볼륨으로 수집한 다음 Python, Scala 및 R을 사용하여 새 아기 이름 데이터를 기존 테이블로 가져오는 방법을 안내합니다.
Important
시작하기 문서는 시작하기: Notebook에서 CSV 데이터 가져오기 및 시각화를 기반으로 작성되었습니다. 이 문서를 완료하려면 해당 문서의 단계를 완료해야 합니다. 시작 문서에 대한 전체 Notebook은 데이터 Notebook 가져오기 및 시각화를 참조하세요.
요구 사항
이 문서의 작업을 완료하려면 다음 요구 사항을 충족해야 합니다.
- 작업 영역에 Unity 카탈로그가 활성화되어 있어야 합니다. Unity 카탈로그를 시작하는 방법에 대한 자세한 내용은 Unity 카탈로그 설정 및 관리를 참조하세요.
- 볼륨에 대한
WRITE VOLUME
권한, 부모 스키마에 대한USE SCHEMA
권한, 부모 카탈로그에 대한USE CATALOG
권한이 있어야 합니다. - 기존 컴퓨팅 리소스를 사용하거나 새 컴퓨팅 리소스를 만들 수 있는 권한이 있어야 합니다. Azure Databricks 시작하거나 Databricks 관리자를 참조하세요.
팁
이 문서의 완성된 Notebook은 추가 데이터 Notebook 수집을 참조 하세요.
1단계: 새 Notebook 만들기
작업 영역에서 Notebook을 생성하려면 사이드바의 새로 만들기를 클릭한 다음 Notebook을 클릭합니다. 작업 영역에서 빈 전자 필기장이 열립니다.
Notebook 만들기 및 관리에 대한 자세한 내용은 Notebook 관리를 참조하세요.
2단계: 변수 정의
이 단계에서는 이 문서에서 만든 예제 Notebook에서 사용할 변수를 정의합니다.
다음 코드를 복사하고 새로운 빈 Notebook 셀에 붙여넣습니다.
<catalog-name>
,<schema-name>
,<volume-name>
을 Unity 카탈로그 볼륨의 카탈로그, 스키마 및 볼륨 이름으로 바꿉니다. 선택에 따라table_name
값을 원하는 테이블 이름으로 바꿀 수 있습니다. 이 문서의 뒷부분에서 아기 이름 데이터를 이 표에 저장합니다.셀을 실행하고 새 빈 셀을 만들려면
Shift+Enter
를 누릅니다.Python
catalog = "<catalog_name>" schema = "<schema_name>" volume = "<volume_name>" file_name = "new_baby_names.csv" table_name = "baby_names" path_volume = "/Volumes/" + catalog + "/" + schema + "/" + volume path_table = catalog + "." + schema print(path_table) # Show the complete path print(path_volume) # Show the complete path
Scala
val catalog = "<catalog_name>" val schema = "<schema_name>" val volume = "<volume_name>" val fileName = "new_baby_names.csv" val tableName = "baby_names" val pathVolume = s"/Volumes/${catalog}/${schema}/${volume}" val pathTable = s"${catalog}.${schema}" print(pathVolume) // Show the complete path print(pathTable) // Show the complete path
R
catalog <- "<catalog_name>" schema <- "<schema_name>" volume <- "<volume_name>" file_name <- "new_baby_names.csv" table_name <- "baby_names" path_volume <- paste0("/Volumes/", catalog, "/", schema, "/", volume, sep = "") path_table <- paste0(catalog, ".", schema, sep = "") print(path_volume) # Show the complete path print(path_table) # Show the complete path
3단계: Unity 카탈로그 볼륨에 새 CSV 데이터 파일 추가
이 단계에서는 2022년 새 베이비 이름인 df
으로 명명된 DataFrame을 만든 다음, Unity 카탈로그 볼륨의 새 CSV 파일에 해당 데이터를 저장합니다.
참고 항목
이 단계에서는 이전 연도에 로드된 기존 데이터에 새 연간 데이터를 추가하는 것을 시뮬레이션합니다. 프로덕션 환경에서 이 증분 데이터는 클라우드 스토리지에 저장됩니다.
다음 코드를 복사하고 새로운 빈 Notebook 셀에 붙여넣습니다. 이 코드는 추가 아기 이름 데이터가 있는 DataFrame을 만든 다음, Unity 카탈로그 볼륨의 CSV 파일에 해당 데이터를 씁니다.
Python
data = [[2022, "CARL", "Albany", "M", 42]] df = spark.createDataFrame(data, schema="Year int, First_Name STRING, County STRING, Sex STRING, Count int") # display(df) (df.coalesce(1) .write .option("header", "true") .mode("overwrite") .csv(f"{path_volume}/{file_name}"))
Scala
val data = Seq((2022, "CARL", "Albany", "M", 42)) val columns = Seq("Year", "First_Name", "County", "Sex", "Count") val df = data.toDF(columns: _*) // display(df) df.coalesce(1) .write .option("header", "true") .mode("overwrite") .csv(f"{pathVolume}/{fileName}")
R
# Load the SparkR package that is already preinstalled on the cluster. library(SparkR) data <- data.frame(Year = 2022, First_Name = "CARL", County = "Albany", Sex = "M", Count = 42) df <- createDataFrame(data) # display(df) write.df(df, path = paste0(path_volume, "/", file_name), source = "csv", mode = "overwrite", header = "true")
Shift+Enter
키를 눌러 셀을 실행하고 다음 셀로 이동합니다.
4단계: CSV 파일에서 DataFrame으로 데이터 로드
참고 항목
이 단계는 클라우드 스토리지에서 데이터 로드를 시뮬레이션합니다.
다음 코드를 복사한 후 빈 Notebook 셀에 붙여넣습니다. 이 코드는 새 베이비 이름 데이터를 CSV 파일의 새 DataFrame에 로드합니다.
Python
df1 = spark.read.csv(f"{path_volume}/{file_name}", header=True, inferSchema=True, sep=",") display(df1)
Scala
val df1 = spark.read .option("header", "true") .option("inferSchema", "true") .option("delimiter", ",") .csv(s"$pathVolume/$fileName") display(df1)
R
df1 <- read.df(paste0(path_volume, "/", file_name), source = "csv", header = TRUE, inferSchema = TRUE) display(df1)
Shift+Enter
키를 눌러 셀을 실행하고 다음 셀로 이동합니다.
5단계: 기존 테이블에 삽입
다음 코드를 복사한 후 빈 Notebook 셀에 붙여넣습니다. 이 코드는 DataFrame의 새 베이비 이름 데이터를 기존 테이블에 추가합니다.
Python
df.write.mode("append").insertInto(f"{path_table}.{table_name}") display(spark.sql(f"SELECT * FROM {path_table}.{table_name} WHERE Year = 2022"))
Scala
df1.write.mode("append").insertInto(s"${pathTable}.${tableName}") display(spark.sql(s"SELECT * FROM ${pathTable}.${tableName} WHERE Year = 2022"))
R
# The write.df function in R, as provided by the SparkR package, does not directly support writing to Unity Catalog. # In this example, you write the DataFrame into a temporary view and then use the SQL command to insert data from the temporary view to the Unity Catalog table createOrReplaceTempView(df1, "temp_view") sql(paste0("INSERT INTO ", path_table, ".", table_name, " SELECT * FROM temp_view")) display(sql(paste0("SELECT * FROM ", path_table, ".", table_name, " WHERE Year = 2022")))
Ctrl+Enter
키를 눌러 셀을 실행합니다.
추가 데이터 Notebook 수집
다음 전자 필기장 중 하나를 사용하여 이 문서의 단계를 수행합니다.
<catalog-name>
, <schema-name>
, <volume-name>
을 Unity 카탈로그 볼륨의 카탈로그, 스키마 및 볼륨 이름으로 바꿉니다. 선택에 따라 table_name
값을 원하는 테이블 이름으로 바꿀 수 있습니다.
Python
Python을 사용하여 추가 데이터 수집 및 삽입
Scala
Scala를 사용하여 추가 데이터 수집 및 삽입
R
R을 사용하여 추가 데이터 수집 및 삽입
다음 단계
데이터 정리 및 향상에 대한 자세한 내용은 시작하기: 데이터 향상 및 정리를 참조하세요.