Создание таблицы кустов из оболочки - имя динамической таблицы - PullRequest
0 голосов
/ 15 декабря 2018

Я работаю на граничном узле Hadoop и запускаю сценарий оболочки bash, который вызывает два R-файла сценария по очереди.Эти сценарии R выполняют анализ текущих данных, а затем сохраняют файл CSV с именем формата «analysis_YYYYMMDD.csv» с сегодняшней датой в HDFS.

Мне нужно, чтобы этот CSV-файл был доступен в виде таблицы Hive.Я также добавляю эти данные в существующую таблицу.В настоящее время я беру ежедневный CSV и запускаю следующий код в Hive CLI:

create table schema.analysis_YYYYMMDD(col1 string, col2 string, col3 double) 
row format delimited fields terminated by ',' stored as textfile ;

LOAD DATA INPATH 'analysis_YYYYMMDD.csv' OVERWRITE INTO TABLE 
schema.analysis_YYYYMMDD;

INSERT INTO TABLE schema.all_analysis SELECT * FROM 
schema.analysis_YYYYMMDD;

Я хотел бы включить этот код Hive CLI в свой скрипт оболочки, чтобы я мог удалить этот последний шаг вручную.Любые советы о том, как это сделать?

1 Ответ

0 голосов
/ 16 декабря 2018

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

Затем вы можете использовать hive командную строку с параметром -f для запуска всего файла сценария

#!/bin/bash
curr_dt=$(date +%Y%m%d) #get date in YYYYMMDD format

cat >daily_sql_"${curr_dt}".sql <<'EOL'
create table schema.analysis_YYYYMMDD(col1 string, col2 string, col3 double) 
row format delimited fields terminated by ',' stored as textfile ;

LOAD DATA INPATH 'analysis_YYYYMMDD.csv' OVERWRITE INTO TABLE 
schema.analysis_YYYYMMDD;

INSERT INTO TABLE schema.all_analysis SELECT * FROM 
schema.analysis_YYYYMMDD;
EOL

if [ -n "$curr_dt" ];then #if defined
 perl -pi -e "s/YYYYMMDD/$curr_dt/"  daily_sql_"${curr_dt}".sql 
                                             #replace date format to $curr_dt
fi

if [ -f daily_sql_"${curr_dt}".sql ]
then
   hive -f daily_sql_"${curr_dt}".sql
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...