Hadoop 如何在beeline HQL脚本中替换变量

Hadoop 如何在beeline HQL脚本中替换变量,hadoop,hive,hiveql,beeline,Hadoop,Hive,Hiveql,Beeline,我正在尝试执行一个包含以下内容的直线hql文件 INSERT OVERWRITE DIRECTORY "${hadoop_temp_output_dir}${file_pattern}${business_date}" select data from database.${table} 我正在使用以下命令执行脚本: beeline -u "jdbc:hive2://svr.us.XXXX.net:10000/;principal=hive/svr.us.XXXX.net@NAEAST.C

我正在尝试执行一个包含以下内容的直线hql文件

INSERT OVERWRITE DIRECTORY "${hadoop_temp_output_dir}${file_pattern}${business_date}"  select data from  database.${table}
我正在使用以下命令执行脚本:

beeline -u "jdbc:hive2://svr.us.XXXX.net:10000/;principal=hive/svr.us.XXXX.net@NAEAST.COM" --hivevar hadoop_temp_output_dir=/tenants/demo/hive/database/ --hivevar file_pattern=sales --hivevar business_date=20180709  -f beeline_test.hql 
我看到变量在配置单元环境中执行时没有被替换。我在这里犯了什么错误。 另外,如何设置init.hql(适用于所有配置)并执行此hql文件


编辑:我得到了答案:我只是对变量使用了双引号,并纠正了一些错误

更好地使用名称空间:变量表示法。像这样:${hivevar:hadoop\u temp\u output\u dir}我已经编辑了我的答案,并让它工作了。另外,我想知道如何将它们作为init脚本的一部分传递。我更感兴趣的是了解如何使用init脚本。我还没有找到任何关于这个的好文章。使用
source
command:和这个:谢谢。我们什么时候使用beeline-i(初始化脚本)?以及如何使用