Я пытаюсь передать переменную beeline. Команда имени исходного файла не может заменить переменную значением. Та же команда работает с использованием hive -f. Пожалуйста, найдите команды ниже.
Примечание:
cat >dev_env.hql
set hivevar:l1_gcb_trxn_db_path="hdfs://quickstart.cloudera:8020/user/hive/warehouse/l1_app_gcb/process/l1_gcb_trxn";
SET hivevar:myvar=dev;
**source /data/1/appgcb/config/"${myvar}"_env.hql;**
create database l1_gcb_trxn
location ${l1_gcb_trxn_db_path} ;
Ошибка
jdbc:hive2://quickstart.cloudera:10000/def> source /data/1/appgcb/config/"${myvar}"_env.hql;
0: jdbc:hive2://quickstart.cloudera:10000/def> create database l1_gcb_trxn
. . . . . . . . . . . . . . . . . . . . . . .> location ${l1_gcb_trxn_db_path} ;
Error: Error while compiling statement: FAILED: ParseException line 2:9 mismatched input '$' expecting StringLiteral near 'location' in database location specification (state=42000,code=40000)
Но hive -f может заменить переменную.
hive -f "${PROJECT_DIR}/tmp/create_db_l1_gcb_trxn.hql" --hivevar db_env=${db_env}