Primeiros passos: ingestão e inserção de dados adicionais

Este get começar artigos orienta o senhor a usar um Databricks Notebook para ingerir um arquivo CSV contendo dados adicionais de nomes de bebês no volume Unity Catalog e, em seguida, importar os novos dados de nomes de bebês para uma tabela existente usando Python, Scala e R.

Importante

Este artigo do Get Começar baseia-se no Get Começar: Importar e visualizar dados de CSV de um site Notebook. O senhor deve completar os passos desse artigo para concluir este artigo. Para acessar o site Notebook completo sobre como começar artigos, consulte Import and visualize data Notebook.

Requisitos

Para concluir a tarefa neste artigo, o senhor deve atender aos seguintes requisitos:

  • O site workspace deve ter Unity Catalog habilitado. Para obter informações sobre como começar com Unity Catalog, consulte Configurar e gerenciar Unity Catalog.

  • Você deve ter o privilégio WRITE VOLUME em um volume, o privilégio USE SCHEMA no esquema pai e o privilégio USE CATALOG no catálogo principal.

  • O senhor deve ter permissão para usar um recurso compute existente ou criar um novo recurso compute. Consulte Começar com Databricks ou consulte o administrador do site Databricks.

Dica

Para obter um Notebook completo para este artigo, consulte Ingest additional data Notebook.

Passo 1: criar um novo notebook

Para criar um notebook no seu workspace, clique em Novo ícone Novo na barra lateral e clique em Notebook. Um notebook em branco será aberto no workspace.

Para saber mais sobre como criar e gerenciar notebooks, consulte Gerenciar notebooks.

Passo 2: definir variáveis

Neste passo, o senhor define variáveis para uso no exemplo Notebook que criou neste artigo.

  1. Copie e cole o código a seguir na nova célula vazia do Notebook. Substitua <catalog-name>, <schema-name> e <volume-name> pelos nomes de catálogo, esquema e volume de um volume do Unity Catalog. Opcionalmente, substitua o valor table_name por um nome de tabela de sua escolha. O senhor salvará os dados do nome do bebê nessa tabela mais adiante neste artigo.

  2. Pressione Shift+Enter para executar a célula e criar uma nova célula em branco.

    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
    
    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
    
    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
    

Etapa 3: adicionar um novo arquivo CSV de dados ao seu volume do Unity Catalog

Este o passo cria um DataFrame chamado df com um novo nome de bebê para 2022 e, em seguida, salva esses dados em um novo arquivo CSV em seu volume do Unity Catalog.

Observação

Essa etapa simula a adição de novos dados anuais aos dados existentes carregados em relação aos anos anteriores. Em seu ambiente de produção, esses dados incrementais seriam armazenados na nuvem.

  1. Copie e cole o código a seguir na nova célula vazia do notebook. Esse código cria o DataFrame com dados adicionais sobre o nome do bebê e, em seguida, grava esses dados em um arquivo CSV em seu volume do Unity Catalog.

    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}"))
    
    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}")
    
    # 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. Pressione Shift+Enter para executar a célula e depois passar para a próxima célula.

Etapa 4: carregar dados no DataFrame a partir do arquivo CSV

Observação

Esta etapa simula o carregamento de dados do armazenamento em nuvem.

  1. Copie e cole o código a seguir em uma célula vazia do notebook. Esse código carrega os dados dos novos nomes de bebês em um novo DataFrame do arquivo CSV.

    df1 = spark.read.csv(f"{path_volume}/{file_name}",
        header=True,
        inferSchema=True,
        sep=",")
    display(df1)
    
    val df1 = spark.read
        .option("header", "true")
        .option("inferSchema", "true")
        .option("delimiter", ",")
        .csv(s"$pathVolume/$fileName")
    display(df1)
    
    df1 <- read.df(paste0(path_volume, "/", file_name),
        source = "csv",
        header = TRUE,
        inferSchema = TRUE)
    display(df1)
    
  2. Pressione Shift+Enter para executar a célula e depois passar para a próxima célula.

Etapa 5: inserir em tabela existente

  1. Copie e cole o código a seguir em uma célula vazia do notebook. Esse código acrescenta os dados dos novos nomes de bebês do DataFrame à tabela existente.

    df.write.mode("append").insertInto(f"{path_table}.{table_name}")
    display(spark.sql(f"SELECT * FROM {path_table}.{table_name} WHERE Year = 2022"))
    
    df1.write.mode("append").insertInto(s"${pathTable}.${tableName}")
    display(spark.sql(s"SELECT * FROM ${pathTable}.${tableName} WHERE Year = 2022"))
    
    # 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. Pressione Ctrl+Enter para executar a célula.

Ingestão de notebooks de dados adicionais

Use um dos seguintes Notebooks para executar os passos deste artigo. Substitua <catalog-name>, <schema-name> e <volume-name> pelos nomes de catálogo, esquema e volume de um volume do Unity Catalog. Opcionalmente, substitua o valor table_name por um nome de tabela de sua escolha.

Ingerir e inserir dados adicionais usando Python

Abra o notebook em outra guia

Ingestão e inserção de dados adicionais usando o Scala

Abra o bloco de anotações em outra guia

Ingerir e inserir uso adicional de dados R

Abra o bloco de anotações em outra guia

Próximas etapas

Para saber mais sobre como limpar e aprimorar dados, consulte Começar a usar: aprimorar e limpar dados.