Как перераспределить фрейм данных на основе более чем одного столбца? - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть фрейм данных: yearDF со следующими столбцами: name, id_number, location, source_system_name, period_year.

Если я хочу перераспределить фрейм данных на основе столбца, я бы сделал:

yearDF.repartition('source_system_name')

У меня есть переменная: val partition_columns = "source_system_name,period_year"

Я пытался сделать это следующим образом:

val dataDFPart = yearDF.repartition(col(${prtn_String_columns}))

, но я получаю ошибку компиляции: cannot resolve the symbol $

Есть ли в любом случаеЯ могу перераспределить фрейм данных: yearDF на основе значений в partition_columns

1 Ответ

0 голосов
/ 24 сентября 2018

В Scala / Spark есть три реализации функции перераспределения:

def repartition(partitionExprs: Column*): Dataset[T]
def repartition(numPartitions: Int, partitionExprs: Column*): Dataset[T]
def repartition(numPartitions: Int): Dataset[T]

Так что для перераспределения по нескольким столбцам вы можете попытаться разделить поле запятой и использовать оператор varargScala на нем, как это:

val columns = partition_columns.split(",").map(x => col(x))
yearDF.repartition(columns: _*)

Еще один способ сделать это, чтобы вызвать каждый col один за другим:

yearDF.repartition(col("source_system_name"), col("period_year"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...