다음을 통해 공유


시작: 추가 데이터 수집 및 삽입

이 시작 문서에서는 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에서 사용할 변수를 정의합니다.

  1. 다음 코드를 복사하고 새로운 빈 Notebook 셀에 붙여넣습니다. <catalog-name>, <schema-name>, <volume-name>을 Unity 카탈로그 볼륨의 카탈로그, 스키마 및 볼륨 이름으로 바꿉니다. 선택에 따라 table_name 값을 원하는 테이블 이름으로 바꿀 수 있습니다. 이 문서의 뒷부분에서 아기 이름 데이터를 이 표에 저장합니다.

  2. 셀을 실행하고 새 빈 셀을 만들려면 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 파일에 해당 데이터를 저장합니다.

참고 항목

이 단계에서는 이전 연도에 로드된 기존 데이터에 새 연간 데이터를 추가하는 것을 시뮬레이션합니다. 프로덕션 환경에서 이 증분 데이터는 클라우드 스토리지에 저장됩니다.

  1. 다음 코드를 복사하고 새로운 빈 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")
    
  2. Shift+Enter 키를 눌러 셀을 실행하고 다음 셀로 이동합니다.

4단계: CSV 파일에서 DataFrame으로 데이터 로드

참고 항목

이 단계는 클라우드 스토리지에서 데이터 로드를 시뮬레이션합니다.

  1. 다음 코드를 복사한 후 빈 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)
    
  2. Shift+Enter 키를 눌러 셀을 실행하고 다음 셀로 이동합니다.

5단계: 기존 테이블에 삽입

  1. 다음 코드를 복사한 후 빈 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")))
    
  2. Ctrl+Enter 키를 눌러 셀을 실행합니다.

추가 데이터 Notebook 수집

다음 전자 필기장 중 하나를 사용하여 이 문서의 단계를 수행합니다. <catalog-name>, <schema-name>, <volume-name>을 Unity 카탈로그 볼륨의 카탈로그, 스키마 및 볼륨 이름으로 바꿉니다. 선택에 따라 table_name 값을 원하는 테이블 이름으로 바꿀 수 있습니다.

Python

Python을 사용하여 추가 데이터 수집 및 삽입

Notebook 가져오기

Scala

Scala를 사용하여 추가 데이터 수집 및 삽입

Notebook 가져오기

R

R을 사용하여 추가 데이터 수집 및 삽입

Notebook 가져오기

다음 단계

데이터 정리 및 향상에 대한 자세한 내용은 시작하기: 데이터 향상 및 정리를 참조하세요.

추가 리소스