我想知道是否可以通过hive在shell中访问hiveconf变量。
例如:
set hivevar:DIR='scripts';
如果我直接输入:
!sh ls -l scripts
:
将打印该目录中的输出。
但是,!sh ls -l ${DIR}
导致
ls: cannot access ${DIR}: No such file or directory
我怀疑这是因为该变量是一个蜂巢变量,并且当您运行!sh命令时,它无法识别${}
语法。可以在hql脚本中定义一个变量,然后在!
命令中使用它吗?
答案 0 :(得分:0)
工作正常。从变量中删除单引号。也不要在sh
之后写!
:
让我们在其中创建目录和文件
$ mkdir scripts
$ touch ./scripts/test.txt
$ ls ./scripts
test.txt
现在运行Hive,定义变量并运行ls
:
hive> set hivevar:DIR=scripts;
hive> ! ls ${hivevar:DIR};
test.txt
让我们在Hive中删除目录(使用! rm -r
),然后尝试再次列出该目录:
hive> ! rm -r ${hivevar:DIR};
hive> ! ls ${hivevar:DIR};
ls: cannot access scripts: No such file or directory
Command failed with exit code = 2
如您所见,一切正常。
详细了解syntax。