При уменьшении количества разделов можно использовать coalesce
, что отлично, потому что оно не вызывает перетасовку и, кажется, работает мгновенно (не требуется дополнительный этап задания).Spark: увеличить количество разделов, не вызывая перетасовки?
Иногда я хотел бы сделать обратное, но repartition
вызывает перетасовку. Я думаю, что несколько месяцев назад я получил эту работу, используя CoalescedRDD
с balanceSlack = 1.0
. Так что бы это произошло, так это разделение раздела так, чтобы результирующие разделы размещались там, где все на одном узле (так малое сетевое IO).
Этот тип функциональности является автоматическим в Hadoop, один просто изменяет раздельный размер. Кажется, что он не работает таким образом в Spark, если не уменьшается количество разделов. Я думаю, что решение может состоять в том, чтобы написать пользовательский разделитель вместе с настраиваемым RDD, где мы определяем getPreferredLocations
... но я думал, что это такая простая и обычная вещь, чтобы сделать, конечно, должен быть прямой способ сделать это?
Вещи пробовали:
.set("spark.default.parallelism", partitions)
на моем SparkConf
, и когда в контексте чтения паркета я попытался sqlContext.sql("set spark.sql.shuffle.partitions= ...
, что на 1.0.0 приводит к ошибке и на самом деле не хочу я хочу, я хочу раздел номер для изменения по всем типам заданий, а не просто перетасовки.
Любое везение найти решение для этого? – nbubis