Разделы Spark-SQl DataFrame

Мне нужно загрузить таблицу Hive с помощью spark-sql, а затем запустить на ней алгоритм машинного обучения. Я делаю это письмо:

val dataSet = sqlContext.sql(" select * from table")

Это работает хорошо, но если бы я хотел увеличить количество частей DataSet Dataframe, как я мог бы это сделать? С обычным RDD я могу писать:

val dataSet = sc.textFile(" .... ", N )

С N количеством разделов, которые я хочу иметь.

Спасибо


person Edge07    schedule 02.12.2015    source источник


Ответы (1)


Вы можете coalesce или repartition получить DataFrame, т.е.:

val dataSet = sqlContext.sql(" select * from table").coalesce(N)
person mgaido    schedule 02.12.2015
comment
Это довольно дорогая операция, не так ли? Накладные расходы на объединение в любом случае должны быть уменьшены за счет ускорения шага обучения. Спасибо - person Edge07; 02.12.2015
comment
Да, это. Он включает в себя передачу всех данных между узлами кластера. Другим вариантом может быть попытка установить свойство конфигурации spark.default.parallelism, но вы должны попробовать, я не знаю, сработает ли это... - person mgaido; 02.12.2015
comment
Вы также можете проверить эту ссылку deepsense.io/optimize-spark -с-распределением-по-и-кластеризацией - person Noman Khan; 06.06.2017