Перезаписать сразу несколько разделов Hadoop

У меня есть секционированная внешняя таблица Hive, которую я должен перезаписать некоторыми записями. Есть много дат, которые нам нужно перезагрузить, и запросы немного тяжелые. Мы хотим знать, возможно ли одновременно загружать два или более разных раздела одновременно? Например, 3 (или более) процессов, работающих параллельно, например:

Процесс1

insert overwrite table_prod partition (data_date)
select * from table_old where data_date=20221110;

Процесс2

insert overwrite table_prod partition (data_date)
select * from table_old where data_date=20221111;

Процесс3

insert overwrite table_prod partition (data_date)
select * from table_old where data_date=20221112;

Почему вы не можете написать цикл сценария оболочки для выполнения этих запросов в параллельных процессах?

OneCricketeer 25.11.2022 01:56

У нас он был в цикле, но он выполнялся последовательно, и мы хотели сначала проверить, возможно ли его параллельное выполнение, потому что мы не были уверены, создаст ли хауоп проблемы из-за параллелизма перезаписей в одной и той же таблице, даже если они были разные перегородки. У нас уже было что-то, запускающее процессы параллельно из unix, тут оставляю скрипт.

alejomarchan 25.11.2022 14:55

cores=10 для fecha в $(hive --showHeader=false --outputformat=tsv2 -e 'показать разделы sandbox_datascientist.am_cdr_datasets;' | cut -d" = " -f2); do hive --hivevar FECHA=${fecha} -f "${PATH_SQL}/insert_cdr_datasets.sql" 1>ins.err 2>ins.out & while :; do background=( $(jobs -p)) if (( ${#background[@]} < $cores )); затем прервать сон 1 сделано сделано

alejomarchan 25.11.2022 14:55
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
102
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Короткий ответ: да, вы можете.

Реальный вопрос в том, как - потому что вам нужно учитывать большой объем данных.

Вариант 1 - да, вы можете использовать сценарий оболочки или какой-либо инструмент планировщика. Но используемый вами запрос будет медленным. вы можете использовать статическое разбиение, которое намного быстрее.

insert overwrite table_prod partition (data_date=20221110) -- pls note i mentioned partition value.
select 
col1, col2... -- exclude data_date column from select list
from table_old where data_date=20221110;

Вариант 2. Вы также можете использовать динамическую схему разделов для загрузки всех разделов одновременно. Это интенсивная операция, но вам не нужно создавать какой-либо сценарий оболочки или любой другой процесс.

insert overwrite table_prod partition (data_date)
select * from table_old 

Эй, большое спасибо, Кушик Рой. Используя статический раздел, с 20 минут, которые длились в день, он превратился почти в 2 минуты в день, и это голазо. Мы только что протестировали целый месяц, работающий 7 дней параллельно, и он летает!!!

alejomarchan 25.11.2022 14:54

если это golazo, то надеюсь я вам помог :)...

Koushik Roy 25.11.2022 19:26

Другие вопросы по теме