gpt4 book ai didi

bash - 从Shell创建Hive表-动态表名称

转载 作者:行者123 更新时间:2023-12-02 20:29:51 25 4
gpt4 key购买 nike

我正在Hadoop边缘节点上运行一个bash shell脚本,该脚本依次调用两个R脚本文件。这些R脚本对当前数据运行分析,然后将具有今天日期的名称格式为“analysis_YYYYMMDD.csv”的CSV文件保存到HDFS。

我需要能够将此CSV文件作为Hive表使用。我还将这些数据附加到现有表中。就目前而言,我每天获取CSV并在Hive CLI中运行以下代码:

create table schema.analysis_YYYYMMDD(col1 string, col2 string, col3 double) 
row format delimited fields terminated by ',' stored as textfile ;

LOAD DATA INPATH 'analysis_YYYYMMDD.csv' OVERWRITE INTO TABLE
schema.analysis_YYYYMMDD;

INSERT INTO TABLE schema.all_analysis SELECT * FROM
schema.analysis_YYYYMMDD;

我想在 shell 程序脚本中包含此Hive CLI代码,以便删除最后的手动步骤。有关如何进行此操作的任何提示?

最佳答案

您可能具有用于创建脚本的模板,并将其每天替换为当天的适当位置。

然后,您可以使用带有hive选项的-f命令行来运行整个脚本文件

#!/bin/bash
curr_dt=$(date +%Y%m%d) #get date in YYYYMMDD format

cat >daily_sql_"${curr_dt}".sql <<'EOL'
create table schema.analysis_YYYYMMDD(col1 string, col2 string, col3 double)
row format delimited fields terminated by ',' stored as textfile ;

LOAD DATA INPATH 'analysis_YYYYMMDD.csv' OVERWRITE INTO TABLE
schema.analysis_YYYYMMDD;

INSERT INTO TABLE schema.all_analysis SELECT * FROM
schema.analysis_YYYYMMDD;
EOL

if [ -n "$curr_dt" ];then #if defined
perl -pi -e "s/YYYYMMDD/$curr_dt/" daily_sql_"${curr_dt}".sql
#replace date format to $curr_dt
fi

if [ -f daily_sql_"${curr_dt}".sql ]
then
hive -f daily_sql_"${curr_dt}".sql
fi

关于bash - 从Shell创建Hive表-动态表名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53796116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com