Hivevar игнорируя значения после пробела - PullRequest
1 голос
/ 03 февраля 2020

У меня есть такой формат файла (publishfile.txt)

drwxrwx---+  h655201 supergroup          0  2019-04-24  09:16  /data/xyz/invisible/se/raw_data/OMEGA
drwxrwx---+  h655201 supergroup          0  2019-04-24  09:16  /data/xyz/invisible/se/raw_data/sample
drwxrwx---+  h655201 supergroup          0  2019-04-24  09:16  /data/xyz/invisible/se/raw_data/sample(1)

и я хочу сохранить значения имени файла в таблице, такой как OMEGA, sample, sample (1). Для этого я использовал такой код

FILE_NAME=$(echo "$line"| awk -F / '{ print $NF }' "$BASE_PATH/publishfile.txt")
echo FILE_NAME

Здесь вывод FILE_NAME ИДЕТ, как -----> OMEGA sample sample(1) Но когда я передаю его в --- hivevar, он берет только пример (1) значение Как в моем коде

beeline -u $HIVEPATH --hivevar namenode=$NAMENODE --hivevar db=$DB_MASTER$COUNTRY$DB_POSTFIX --hivevar dirlocation --hivevar filename= $FILE_NAME --hivevar queue=$QUEUE_NAME--showHeader=false --showWarnings=true $BASE_PATH/TOM/SCRIPT/hql/insert_data.hql

НО ЗДЕСЬ имя файла хранит только образец (1), который вставлен в таблицу, как я могу убедиться, что все значение переменной vaariable попадает в имя файла и в нем хранится OMEGA sample sample(1) значение

1 Ответ

0 голосов
/ 03 февраля 2020

Переменные в кавычках в командной оболочке:

--hivevar filename="$FILE_NAME"

В этом случае строка, содержащая пробелы, будет передана как одна переменная.

В качестве альтернативы вы можете передать его следующим образом: --hivevar filename=${FILE_NAME}

Также ваша команда echo должна быть echo "$FILE_NAME" not echo FILE_NAME

Демонстрация передачи переменной:

var="one two three";
echo "$var"

Отпечатки:

one two three

Передать в улей:

hive -hivevar var="$var"

Печать в улье:

hive> select '${hivevar:var}';
OK
one two three
...