Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 在配置单元中声明查询时,如何在变量中调用查询?_Shell_Hadoop_Hive_Hiveql - Fatal编程技术网

Shell 在配置单元中声明查询时,如何在变量中调用查询?

Shell 在配置单元中声明查询时,如何在变量中调用查询?,shell,hadoop,hive,hiveql,Shell,Hadoop,Hive,Hiveql,在配置单元中声明查询时,如何在变量中调用查询?我正在创建一个shell脚本来删除前一个日期的分区,因此在文件.hql中我使用: Alter table table_name drop partition column >= ‘datesub(current_date-1)’; 但它不起作用,所以我尝试在变量中声明条件,然后在这里调用。所以我首先尝试声明变量,然后在查询中调用它: set var1= Select date_sub(current_date, 1) Alter table

在配置单元中声明查询时,如何在变量中调用查询?我正在创建一个shell脚本来删除前一个日期的分区,因此在文件.hql中我使用:

Alter table table_name drop partition column >= ‘datesub(current_date-1)’;
但它不起作用,所以我尝试在变量中声明条件,然后在这里调用。所以我首先尝试声明变量,然后在查询中调用它:

set var1= Select date_sub(current_date, 1)

Alter table table_name drop partition column >= ‘${hoveconf:var1}’;

但这不起作用,因为变量声明不正确。那么如何在变量下声明查询呢?

Hive在替换之前不计算变量,变量是按原样被替换的。分区规范中也不允许函数和子查询

解决方案是在shell中计算变量并将其传递给脚本:

bash$ dt=$(date -d '-1 day' +%Y-%m-%d)
bash$ hive -e "ALTER TABLE table_name drop partition (column >='$dt')"
或者,如果希望调用脚本文件,则传递hiveconf变量:

  bash$ dt=$(date -d '-1 day' +%Y-%m-%d)
  bash$ hive -hiveconf dt="$dt" -f script_name
#在脚本中使用
“${hiveconf:dt}”

ALTER TABLE table_name drop partition (column >='${hiveconf:dt}')

Hive在替换之前不计算变量,变量按原样被替换。分区规范中也不允许函数和子查询

解决方案是在shell中计算变量并将其传递给脚本:

bash$ dt=$(date -d '-1 day' +%Y-%m-%d)
bash$ hive -e "ALTER TABLE table_name drop partition (column >='$dt')"
或者,如果希望调用脚本文件,则传递hiveconf变量:

  bash$ dt=$(date -d '-1 day' +%Y-%m-%d)
  bash$ hive -hiveconf dt="$dt" -f script_name
#在脚本中使用
“${hiveconf:dt}”

ALTER TABLE table_name drop partition (column >='${hiveconf:dt}')