Поделиться через


Начало работы: прием и вставка дополнительных данных

В этой статье описано, как использовать записную книжку Azure Databricks для приема CSV-файла, содержащего дополнительные данные имени ребенка в том каталога Unity, а затем импортировать новые данные имени ребенка в существующую таблицу с помощью Python, Scala и R.

Внимание

В этой статье показано, как начать работу: импортировать и визуализировать данные CSV из записной книжки. Чтобы завершить эту статью, необходимо выполнить действия, описанные в этой статье. Полный записной книжки для этой статьи о начале работы см. в разделе "Импорт и визуализация записных книжек данных".

Требования

Чтобы выполнить задачи в этой статье, необходимо выполнить следующие требования:

  • Рабочая область должна включать каталог Unity. Сведения о начале работы с каталогом Unity см. в разделе "Настройка каталога Unity" и управление ими.
  • У вас должны быть WRITE VOLUME права на том, USE SCHEMA привилегии родительской схемы и USE CATALOG привилегии родительского каталога.
  • Необходимо иметь разрешение на использование существующего вычислительного ресурса или создать новый вычислительный ресурс. См. статью "Начало работы: настройка учетной записи и рабочей области " или просмотр администратора Databricks.

Совет

Полный записной книжки для этой статьи см. в разделе "Прием дополнительных записных книжек данных".

Шаг 1. Создание записной книжки

Чтобы создать записную книжку в рабочей области, нажмите кнопку Значок "Создать" на боковой панели и нажмите кнопку "Записная книжка". Пустая записная книжка открывается в рабочей области.

Дополнительные сведения о создании записных книжек и управлении ими см. в статье Управление записными книжками.

Шаг 2. Определение переменных

На этом шаге вы определите переменные для использования в примере записной книжки, создаваемой в этой статье.

  1. Скопируйте и вставьте следующий код в новую пустую ячейку записной книжки. Замените <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. Добавление нового CSV-файла данных в том каталога Unity

На этом шаге создается кадр данных df с новым именем ребенка для 2022 года, а затем сохраняет эти данные в новый CSV-файл в томе каталога Unity.

Примечание.

Этот шаг имитирует добавление новых ежегодных данных в существующие данные, загруженные за предыдущие годы. В рабочей среде эти добавочные данные будут храниться в облачном хранилище.

  1. Скопируйте и вставьте следующий код в новую пустую ячейку записной книжки. Этот код создает кадр данных с дополнительными данными имени ребенка, а затем записывает эти данные в CSV-файл в том каталога Unity.

    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-файла

Примечание.

Этот шаг имитирует загрузку данных из облачного хранилища.

  1. Скопируйте и вставьте следующий код в пустую ячейку записной книжки. Этот код загружает новые данные имен ребенка в новый кадр данных из CSV-файла.

    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. Скопируйте и вставьте следующий код в пустую ячейку записной книжки. Этот код добавляет новые имена детей из кадра данных в существующую таблицу.

    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 чтобы запустить ячейку.

Прием дополнительных записных книжек данных

Чтобы выполнить действия, описанные в этой статье, используйте одну из следующих записных книжек. Замените <catalog-name>, <schema-name>а также <volume-name> именами каталогов, схем и томов для тома каталога Unity. При необходимости замените table_name значение именем таблицы.

Python

Прием и вставка дополнительных данных с помощью Python

Получить записную книжку

Scala

Прием и вставка дополнительных данных с помощью Scala

Получить записную книжку

R

Прием и вставка дополнительных данных с помощью R

Получить записную книжку

Следующие шаги

Дополнительные сведения о очистке и улучшении данных см. в статье "Начало работы: улучшение и очистка данных".

Дополнительные ресурсы