Начало работы: прием и вставка дополнительных данных
В этой статье описано, как использовать записную книжку Azure Databricks для приема CSV-файла, содержащего дополнительные данные имени ребенка в том каталога Unity, а затем импортировать новые данные имени ребенка в существующую таблицу с помощью Python, Scala и R.
Внимание
В этой статье показано, как начать работу: импортировать и визуализировать данные CSV из записной книжки. Чтобы завершить эту статью, необходимо выполнить действия, описанные в этой статье. Полный записной книжки для этой статьи о начале работы см. в разделе "Импорт и визуализация записных книжек данных".
Требования
Чтобы выполнить задачи в этой статье, необходимо выполнить следующие требования:
- Рабочая область должна включать каталог Unity. Сведения о начале работы с каталогом Unity см. в разделе "Настройка каталога Unity" и управление ими.
- У вас должны быть
WRITE VOLUME
права на том,USE SCHEMA
привилегии родительской схемы иUSE CATALOG
привилегии родительского каталога. - Необходимо иметь разрешение на использование существующего вычислительного ресурса или создать новый вычислительный ресурс. См. статью "Начало работы: настройка учетной записи и рабочей области " или просмотр администратора Databricks.
Совет
Полный записной книжки для этой статьи см. в разделе "Прием дополнительных записных книжек данных".
Шаг 1. Создание записной книжки
Чтобы создать записную книжку в рабочей области, нажмите кнопку "Создать" на боковой панели и нажмите кнопку "Записная книжка". Пустая записная книжка открывается в рабочей области.
Дополнительные сведения о создании записных книжек и управлении ими см. в статье Управление записными книжками.
Шаг 2. Определение переменных
На этом шаге вы определите переменные для использования в примере записной книжки, создаваемой в этой статье.
Скопируйте и вставьте следующий код в новую пустую ячейку записной книжки. Замените
<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. Добавление нового CSV-файла данных в том каталога Unity
На этом шаге создается кадр данных df
с новым именем ребенка для 2022 года, а затем сохраняет эти данные в новый CSV-файл в томе каталога Unity.
Примечание.
Этот шаг имитирует добавление новых ежегодных данных в существующие данные, загруженные за предыдущие годы. В рабочей среде эти добавочные данные будут храниться в облачном хранилище.
Скопируйте и вставьте следующий код в новую пустую ячейку записной книжки. Этот код создает кадр данных с дополнительными данными имени ребенка, а затем записывает эти данные в 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")
Нажмите
Shift+Enter
, чтобы запустить ячейку, а затем перейдите к следующей ячейке.
Шаг 4. Загрузка данных в кадр данных из CSV-файла
Примечание.
Этот шаг имитирует загрузку данных из облачного хранилища.
Скопируйте и вставьте следующий код в пустую ячейку записной книжки. Этот код загружает новые данные имен ребенка в новый кадр данных из 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)
Нажмите
Shift+Enter
, чтобы запустить ячейку, а затем перейдите к следующей ячейке.
Шаг 5. Вставка в существующую таблицу
Скопируйте и вставьте следующий код в пустую ячейку записной книжки. Этот код добавляет новые имена детей из кадра данных в существующую таблицу.
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
чтобы запустить ячейку.
Прием дополнительных записных книжек данных
Чтобы выполнить действия, описанные в этой статье, используйте одну из следующих записных книжек. Замените <catalog-name>
, <schema-name>
а также <volume-name>
именами каталогов, схем и томов для тома каталога Unity. При необходимости замените table_name
значение именем таблицы.
Python
Прием и вставка дополнительных данных с помощью Python
Scala
Прием и вставка дополнительных данных с помощью Scala
R
Прием и вставка дополнительных данных с помощью R
Следующие шаги
Дополнительные сведения о очистке и улучшении данных см. в статье "Начало работы: улучшение и очистка данных".