Как определить количество ведер в Spark - PullRequest
0 голосов
/ 08 мая 2019

Я прочитал довольно много статей о ведении в Spark, но до сих пор не смог получить ясную картину этого.Но, кроме того, я до сих пор понимал, что «Bucketing - это разделение внутри раздела, и он используется для кандидатов, обладающих очень высокой мощностью, что помогает избежать операции перестановки».

Даже в документации Spark не могу найти достаточно объяснений.Вставка примера из документации

peopleDF.write.bucketBy (42, "name"). SortBy ("age"). SaveAsTable ("people_bucketed")

Невозможно понять здесь, какчисло «42» определено для группирования.Пожалуйста, помогите понять то же самое.Кроме того, было бы замечательно любое более четкое объяснение относительно группирования.

1 Ответ

0 голосов
/ 08 мая 2019

42 это как смысл жизни? Пример поэтому.

Spark Bucketing удобен для ETL в Spark, так как Spark Job A записывает данные для t1 в соответствии с определением Bucketing, а Spark Job B записывает данные для t2 аналогичным образом, и Spark Job C объединяет t1 и t2, используя определения Bucketing, избегая перестановок, или обменов. , Оптимизация.

Нет общей формулы. Это зависит от объемов, доступных исполнителей и т. Д. Главное - избежать перетасовки. В качестве руководства по умолчанию для JOINing и AGGr задано значение 200, поэтому подходом может быть 200 или более, но опять же, сколько ресурсов у вас есть на вашем кластере?

Но для удовлетворения вашего стремления к знаниям можно утверждать, что 42 должен действительно быть установлен на количество исполнителей (= 1 ядро), которое вы выделили для Spark Job / App, оставляя в стороне проблему асимметрии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...