Size: a a a

2019 December 13

GP

Grigory Pomadchin in Data Engineers
Vadim Shatalov
Всем привет, сори за возможно холиварный вопрос по Spark - когда и почему стоит использовать RDD взамен всего остального, именно на практике
Мало когда оно тебе нужно.

Руками схему партицировария когда хочешь делать, сам заниматься физ планом; когда у тебя 100% данных всегда в память грузятся (т.е. нет колонок в твоём датасете - все бинарные блобы); и то это все спрятать можно часто за дсы/ дфы чтоб никто твои рдды не видел
источник

A

Alexander in Data Engineers
Коллеги, подскажите, пожалуйста. Есть партиционированная таблица в hive. В ней многие записи дублированы, в каждой партиции много файлов. Хочу привести таблицу в порядок: одна партиция - один файл, отсутствие дублей. Можно, конечно, просто select distinct * и выставить merge.mapredfiles=true, но таблица большая, кластер сдохнет такое переваривать. Возможно ли это сделать без писания приложения?
источник

A

Alex in Data Engineers
А почему сдохнет?
источник

A

Alex in Data Engineers
Старенький мапредьюс он как трактор, медленно но уверенно перепашет все с минимум ресурсов
источник

AZ

Anton Zadorozhniy in Data Engineers
Alexander
Коллеги, подскажите, пожалуйста. Есть партиционированная таблица в hive. В ней многие записи дублированы, в каждой партиции много файлов. Хочу привести таблицу в порядок: одна партиция - один файл, отсутствие дублей. Можно, конечно, просто select distinct * и выставить merge.mapredfiles=true, но таблица большая, кластер сдохнет такое переваривать. Возможно ли это сделать без писания приложения?
для ORC есть alter .. concatenate но касательно дублей придется каждую партицию группировать по полной строке (или производной от строки)
источник

AZ

Anton Zadorozhniy in Data Engineers
и да, если запустить координатор который жует по одной партиции то будет все довольно легко (но долго), и можно параллелизмом управлять чтобы разгонять временно
источник

A

Alexander in Data Engineers
Alex
Старенький мапредьюс он как трактор, медленно но уверенно перепашет все с минимум ресурсов
На стадии редьюса и дохнет старенький мапредьюс
источник

A

Alexander in Data Engineers
Anton Zadorozhniy
для ORC есть alter .. concatenate но касательно дублей придется каждую партицию группировать по полной строке (или производной от строки)
У меня avro
источник

A

Alex in Data Engineers
Alexander
На стадии редьюса и дохнет старенький мапредьюс
почему он сдохнет
дистинкт уже частично будет после sort на предыдущем этапе
остается лишь в редьюсере решить КАК откинуть дубликаты
источник

A

Alexander in Data Engineers
Anton Zadorozhniy
и да, если запустить координатор который жует по одной партиции то будет все довольно легко (но долго), и можно параллелизмом управлять чтобы разгонять временно
Вот как запустить, чтобы он по одной партиции жевал, а не сразу всю таблицу?
источник

A

Alex in Data Engineers
писал ручками Mapper и Reducer когда это ещё не было в треднде 😉

поэтому и не понимаю почему он сдохнуть должен
источник

A

Alexander in Data Engineers
Alex
почему он сдохнет
дистинкт уже частично будет после sort на предыдущем этапе
остается лишь в редьюсере решить КАК откинуть дубликаты
Так дистинкт как раз и откидывает дубликаты
источник

AZ

Anton Zadorozhniy in Data Engineers
Alexander
Вот как запустить, чтобы он по одной партиции жевал, а не сразу всю таблицу?
в смысле? у вас на вход путь и на выход путь, подавайте просто по одному через ваш планировщик (узи или что там у вас)
источник

AZ

Anton Zadorozhniy in Data Engineers
дубликаты внутри партиций, или есть между партициями?
источник

A

Alexander in Data Engineers
Alex
писал ручками Mapper и Reducer когда это ещё не было в треднде 😉

поэтому и не понимаю почему он сдохнуть должен
Так на спарке я тоже это легко сделаю. Но это долгий процесс: закодить, отдать тестировщикам, релизнуть. Вопрос, можно ли это сделать просто в hive cli
источник

A

Alexander in Data Engineers
Anton Zadorozhniy
дубликаты внутри партиций, или есть между партициями?
Только внутри партиций
источник

AZ

Anton Zadorozhniy in Data Engineers
я такие штуки больше всего люблю на пиге писать
источник

A

Alex in Data Engineers
ну вот смотри:
гоним mapper который в разные “баккеты” по хэш партишионеру записывает данные, причем внутри они сортируются
дальше на reducer идёт классический sort-merge, то есть на в редьюсер подается key и итератор на values (которые вычитываются по мере необходимости), тут можно емитить первый и переходить к следующему ключу, либо делать группировку и тд


все вопросы по размеру памяти на стороне mapper и и reducer обусловлены как часто диск дергать
ничего объемного там нету
источник

AZ

Anton Zadorozhniy in Data Engineers
он страшненький, но умеет мерджить инпут сплиты (спарк до сих пор через костыли это делает), и простой
источник

A

Alexander in Data Engineers
Anton Zadorozhniy
он страшненький, но умеет мерджить инпут сплиты (спарк до сих пор через костыли это делает), и простой
Нет у нас пига :(
источник