es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Declaración Merge de la tabla Delta de Databricks utilizando R.

Recientemente comencé a trabajar en Databricks y he estado tratando de encontrar una manera de realizar una declaración de combinación en una tabla Delta, utilizando una API de R (preferiblemente sparklyr). El propósito final es imponer de alguna manera una restricción de “duplicado” como se describe aquí. La documentación mencionada describe el flujo de trabajo de Python :

deltaTable.alias("logs").merge(
    newDedupedLogs.alias("newDedupedLogs"),
    "logs.uniqueId = newDedupedLogs.uniqueId") \
.whenNotMatchedInsertAll() \
.execute()

Sin embargo, me preguntaba si hay una manera sencilla de lograr esto a través de R. Cualquier ayuda/idea sobre el tema será muy apreciada ya que soy un nuevo usuario (como se menciona arriba). ¡Gracias de antemano!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible realizar una declaración de combinación en una tabla Delta usando R con el paquete sparklyr. Aquí hay un ejemplo de cómo lograr esto:

    library(sparklyr)
    
    # Conéctese a un clúster de Databricks
    sc <- spark_connect(method = "databricks")
    
    # Cargue la tabla Delta en un DataFrame de Spark
    df <- spark_read_delta(
      sc = sc,
      path = "/mnt/data/my_delta_table"
    )
    
    # Defina el nuevo DF con registros deduplicados
    new_df <- data.frame(
      uniqueId = c(1, 2, 3),
      logData = c("log1", "log2", "log3")
    )
    
    # Convierta el nuevo DF en un DataFrame de Spark
    new_logs <- sdf_copy_to(sc, new_df)
    
    # Combine los dos data frames
    merged_df <- df %>%
      sdf_merge(
        new_logs,
        by = "uniqueId",
        all = FALSE
      )
    
    # Escriba de nuevo en la tabla Delta
    merged_df %>%
      sdf_write_delta(
        path = "/mnt/data/my_delta_table",
        mode = "overwrite"
      )
    

    En el código anterior, primero nos conectamos a un clúster de Databricks utilizando la función spark_connect() del paquete sparklyr. Luego, cargamos la tabla Delta en un DataFrame de Spark con spark_read_delta(). A continuación, definimos el nuevo DataFrame con registros deduplicados como un data.frame local de R y lo convertimos en un DataFrame de Spark utilizando sdf_copy_to(). Finalmente, realizamos una operación de combinación en los dos data frames utilizando la función sdf_merge() y escribimos los resultados de nuevo en la tabla Delta con sdf_write_delta().

    Tenga en cuenta que el parámetro all en la función sdf_merge() se establece en FALSE para imponer una restricción de “duplicado”. Si all se establece en TRUE, la combinación también incluirá filas que no coincidan de ambos data frames.

    ¡Espero que esto ayude! Háganos saber si tiene más preguntas.

Comments are closed.