WedX - журнал о программировании и компьютерных науках

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

Я новичок в улье. Может ли кто-нибудь помочь мне с этим требованием?

Мое требование - динамически удалять разделы. У меня был SQL, который приводит к различным регионам (SQL ниже: после ALTER TABLE FROM). Теперь я хочу удалить регионы (разделенные в моей таблице кустов), которые возвращаются моим SQL.

Я пробовал следующим образом:

ALTER TABLE <TableName> PARTITION(region=tab.region)
FROM
select tab.region from 
(SELECT * from Table1) tab  join
(select filename from  Table2) tab1
on tab1.filename = tab.filename

Он выдает следующее исключение:

'1:21:13  [ALTER - 0 row(s), 0.008 secs]  [Error Code: 40000, SQL State: 42000]  Error while compiling statement: FAILED: ParseException 
line 1:77 cannot recognize input near 'tab' '.' 'region' in constant
... 1 statement(s) executed, 0 row(s) affected, exec/fetch time: 0.008/0.000 sec  [0 successful, 0 warnings, 1 errors]

Может ли кто-нибудь помочь мне, пожалуйста?

Заранее спасибо

09.08.2016

Ответы:


1

Сценарий оболочки:

$ cat test
#!/bin/sh

IFS=$'\n' 

#get partitions 
part=`hive -e "select tab.region from (SELECT * from Table1) tab  join (select filename from  Table2) tab1 on tab1.filename = tab.filename"`

for p in $part
do

   partition=`echo $p|cut -d '=' -f2`

   echo Drooping partitions .... $partition

   #drop partitions
   hive -e "ALTER TABLE test_2 DROP PARTITION(region=\"$partition\")"

done

Вывод:

$ ./test
OK
Time taken: 1.343 seconds, Fetched: 2 row(s)
Drooping partitions .... 2016-07-26 15%3A00%3A00
Dropped the partition region=2016-07-26 15%3A00%3A00
OK
Time taken: 2.686 seconds
Drooping partitions .... 2016-07-27
Dropped the partition region=2016-07-27
OK
Time taken: 1.612 seconds

обновление: ~~> Запуск сценария оболочки из hql (это просто POC, внесите изменения в соответствии с вашими требованиями), используя ! <command> - Executes a shell command from the Hive shell.

test_1.sh:

#!/bin/sh
echo " This massage is from $0 file"

hive-test.hql:

! echo showing databases... ; 
show databases;

! echo showing tables...;
show tables;

! echo runing shell script...;
! /home/cloudera/test_1.sh

вывод:

$ hive -v -f hive-test.hql
showing databases...

    show databases
OK
default
retail_edw
sqoop_import
Time taken: 0.997 seconds, Fetched: 3 row(s)
showing tables...

    show tables
OK
scala_departments
scaladepartments
stack
stackover_hive
Time taken: 0.062 seconds, Fetched: 4 row(s)
runing shell script...
 This massage is from /home/cloudera/test_1.sh file
09.08.2016
  • Спасибо за ответ. Используя сценарий оболочки, он работает. Но мы запускаем .hql с помощью oozie, а вышеприведенный hql находится в середине большого hql-файла. Так что у меня есть возможность, если это требование может быть обработано в hql? без использования сценария оболочки 10.08.2016
  • @user2531569 user2531569 Я не думаю, что hql может быть таким динамичным. Боюсь, в итоге вы получите что-то вроде: разрежьте существующий hql-скрипт пополам, пусть oozie запустит первую половину, пусть oozie запустит сценарий оболочки, а затем пусть oozie запустит последнюю половину. 10.08.2016
  • @ user2531569 — я согласен с Деннисом — вы можете запустить сценарий оболочки из oozie ИЛИ вы можете запустить сценарий оболочки из hql - подробности см. в моем обновленном ответе... 10.08.2016
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]