У меня есть скрипт оболочки, который подключается к beeline и собирает данные из 100 таблиц и сбрасывает эти данные в одну таблицу. Здесь мой сценарий оболочки попадает в билайн 5 раз, поэтому для завершения процесса требуется слишком много времени, поэтому мне посоветовали использовать spark shell вместо сценария оболочки
Я пытался получить данные с помощью сценария оболочки, но это занимает около 5 часов, поэтому мне было предложено получить данные с использованием искры. Этот код должен запускаться ежедневно.
Я использовал следующий код
beeline -u " connection details " -- show header =false -- outputformat=tsv2 - hivevar dbname=${dbname} - e "show partition ${table_name}; > {tableProcess}.tmp
for line in `cat${tableprocess}.tmp| tail -1( for getting latest partition)
do
part_year = I have found a way to extract the year
part_month= same
part_day = same
затем, после всего этого, я использовал выше для сбора данных из 100 таблиц одну за другой, используя beeline.
beeline -u "connection details" select count(*) from {table_process} where year= part_year and month=part_month and day=part_day;> {tableProcess}.count
Я использовал beeline -u в 4 раза больше, чтобы получать другие данные, используя даты раздела
После получения различной информации
I have used printf"${dbname},${table_name},{tableProcess}.count and more >> metadata.txt.
этот текстовый файл хранится в месте размещения, и на его основе я создаю внешнюю таблицу.
Теперь мне нужно включить искру в приведенный выше код, пожалуйста, помогите, как я могу преобразовать это в полный код искры, чтобы сократить время обработки.