Começar: Ingerir e inserir 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 nesse 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:

Dica

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

o passo 1: Criar um novo Notebook

Para criar um Notebook em seu workspace:

  1. Clique em Novo ícone New na barra lateral e, em seguida, clique em Notebook.

  2. Na página "Criar Notebook":

    • Especifique um nome exclusivo para o seu notebook.

    • Defina o idioma default para seu Notebook e clique em Confirm, se solicitado.

    • Clique em Connect (Conectar ) e selecione um recurso compute. Para criar um novo recurso de computação, consulte Usar computação.

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

o 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 site Notebook. Substitua <catalog-name>, <schema-name> e <volume-name> pelos nomes de catálogo, esquema e volume de um volume do Unity Catalog. Substitua <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
    

o passo 3: Adicionar um novo arquivo de dados CSV ao volume Unity Catalog

Esse 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 no volume Unity Catalog.

Observação

Esse passo simula a adição de novos dados anuais aos dados existentes carregados para os anos anteriores. Em seu ambiente de produção, esses dados incrementais seriam armazenados em cloud storage.

  1. Copie e cole o código a seguir na nova célula vazia do site 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 no 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 passe para a próxima célula.

o passo 4: Carregar dados no site DataFrame a partir do arquivo CSV

Observação

Esse passo simula o carregamento de dados do armazenamento cloud.

  1. Copie e cole o código a seguir em uma célula vazia do site 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 passe para a próxima célula.

o passo 5: Inserir na tabela existente

  1. Copie e cole o código a seguir em uma célula vazia do site Notebook. Esse código anexa os novos dados de 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.

Ingerir dados adicionais Notebook

Use um dos seguintes Notebooks para realizar os passos deste artigo.

Ingerir e inserir uso adicional de dados Python

Abra o bloco de anotações em outra guia

Ingerir e inserir uso adicional de dados 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óximos passos

Para saber mais sobre a limpeza e o aprimoramento de dados, consulte Get começar: Aprimorar e limpar dados.