配置单元在从文本传递参数时不插入行,尽管它运行

lg40wkob  于 2021-06-28  发布在  Hive
关注(0)|答案(1)|浏览(193)

我尝试通过以下操作将参数从linux上的文本文件传递到配置单元脚本:
文本文件的内容是:
$emp\u code='prd10'$location='美国'
我需要使用这些变量来传递到这个配置单元sql中。脚本的内容包括:
!cat文件位置/empdetails.txt;
在emp\u pay\u detail中插入select*from empinfo where empcode='${hiveconf:emp_code}'和私奔''${hiveconf:location}';
其思想是从linux的文本文件中传递不同的参数
我尝试使用以下命令运行此命令:
配置单元-hiveconf emp\u代码-hiveconf位置-f employeedet.sql
脚本运行,但不插入任何行

eblbsuwk

eblbsuwk1#

可以创建配置单元指令输入文件:

set emp_code=PRD10;
set location=USA;

并使用 hive -i input.txt -f employeedet.sql 如果要指定多个位置: set location=USA,UK ,则需要将查询中的条件更改为: array_contains(split('${hiveconf:location}',','), elocation) 完整查询:

insert into emp_pay_detail as select * from empinfo where 
  array_contains(split('${hiveconf:emp_code}',','), empcode) and
  array_contains(split('${hiveconf:location}',','), elocation);

相关问题