Cómo especificar sugerencias de sesgo en los comandos Join de DataFrame y en el conjunto de datos

Al realizar un comando con objetos o , si encuentra que la consulta está bloqueada al finalizar un pequeño número de tareas debido a la asimetría de datos, puede especificar la sugerencia de asimetría con el join DataFrame método : Dataset hint("skew") df.hint("skew") . La optimización de combinación de sesgo se realiza en el para el que se especifica la DataFrame skew sugerencia.

Además de la sugerencia básica, puede especificar el método con las siguientes combinaciones de parámetros: nombre de columna, lista de nombres de columna y nombre de columna y hint valor de asimetría.

  • DataFrame y nombre de columna. La optimización de combinación de sesgo se realiza en la columna especificada de DataFrame .

    df.hint("skew", "col1")
    
  • DataFrame y varias columnas. La optimización de combinación de sesgo se realiza para varias columnas de DataFrame .

    df.hint("skew", ["col1","col2"])
    
  • DataFrame, nombre de columna y valor de asimetría. La optimización de combinación de sesgo se realiza en los datos de la columna con el valor de asimetría.

    df.hint("skew", "col1", "value")
    

Ejemplo

En este ejemplo se muestra cómo especificar la sugerencia de sesgo para varios DataFrame objetos implicados en una join operación:

val joinResults = ds1.hint("skew").as("L").join(ds2.hint("skew").as("R"), $"L.col1" === $"R.col1")