У меня есть основной скрипт bash, выполняющий несколько других сценариев bash и hql-файлов. Файлы hql имеют запросы на улей. В запросах улья есть предложение where, и оно находится в поле даты. Я пытаюсь автоматизировать процесс, и мне нужно, чтобы предложение where изменилось на основе сегодняшней даты (которая получена из основного сценария bash).аргументы командной строки в файлах hive (.hql) из сценария bash
Например .hql файл выглядит следующим образом: Это selectrows.hql
DROP TABLE IF EXISTS tv.events_tmp;
CREATE TABLE tv.events_tmp
( origintime STRING,
deviceid STRING,
clienttype STRING,
loaddate STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\u0001'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE LOCATION 'hdfs://nameservice1/data/full/events_tmp';
INSERT INTO TABLE tv.events_tmp SELECT origintime, deviceid, clienttype, loaddate FROM tv.events_tmp WHERE origintime >= '2015-11-02 00:00:00' AND origintime < '2015-11-03 00:00:00';
Поскольку сегодня 2015-11-11, я хочу, чтобы иметь возможность пройти date - 9 days
и date-8 days
к .hql сценария из сценария bash. Есть ли способ передать эти две переменные из сценария bash в файл .hql.
Так что главный Баш скрипт выглядит следующим образом:
#!/bin/bash
# today's date
prodate=`date +%Y-%m-%d`
echo $prodate
dateneeded=`date -d "$prodate - 8 days" +%Y-%m-%d`
echo $dateneeded
# CREATE temp table
beeline -u 'jdbc:hive2://datanode:10000/;principal=hive/[email protected]' -d org.apache.hive.jdbc.HiveDriver -f /home/automation/tv/selectrows.hql
echo "created table"
заранее спасибо.
Является ли файл hql используемым в качестве аргумента/ввода для какой-либо другой команды? Эта команда/etc. поддерживающие переменные? Если нет, вы всегда можете использовать заполнители '@ DATE1 @' и т. Д. В файле '.hql', а затем заменить их во время выполнения (с помощью' sed' и т. Д.). –
Привет, Этан, посмотри, я обновил некоторую информацию – user1189851
Это хорошо, но не отвечает на мои вопросы. Это указывает на то, что решение для замены заполнителя будет работать. –