Определение подсказок для отклонений в командах объединения Dataset и DataFrame

При выполнении join команды с DataFrame Dataset объектами или, если обнаруживается, что запрос зависает при завершении небольшого числа задач из-за неравномерного распределения данных, можно указать указание о неравномерности с помощью hint("skew") метода: df.hint("skew") . Оптимизация неравномерного объединения выполняется для, DataFrame для которого указана skew Подсказка.

В дополнение к базовой подсказке можно указать hint метод со следующими сочетаниями параметров: имя столбца, список имен столбцов, имя столбца и значение смещения.

  • DataFrame и имя столбца. Оптимизация неравномерного объединения выполняется для указанного столбца DataFrame .

    df.hint("skew", "col1")
    
  • DataFrame и несколько столбцов. Оптимизация неравномерного объединения выполняется для нескольких столбцов в DataFrame .

    df.hint("skew", ["col1","col2"])
    
  • DataFrame, имя столбца и значение смещения. Оптимизация неравномерного объединения выполняется над данными в столбце с использованием значения смещения.

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

Пример

В этом примере показано, как задать указание наклона для нескольких DataFrame объектов, участвующих в join операции:

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