【问题标题】:Hive Table Creation From Shell - Dynamic Table Name从 Shell 创建 Hive 表 - 动态表名称
【发布时间】:2018-12-16 11:54:29
【问题描述】:

我正在研究一个 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 代码,这样我就可以删除最后一个手动步骤。有关如何解决此问题的任何提示?

【问题讨论】:

  • 如果您已经将新表附加到另一个表,那么创建新表的目的是什么?
  • 我想这不是必需的,到目前为止,我一直将其作为冗余游戏(例如,如果我不小心删除表 schema.all_analysis 我可以通过其他表重建它。)我了解如果我只是将文件保存为“analysis.csv”并附加,那么 shell 脚本会容易得多。
  • 如果您担心丢失数据,为什么不使用外部表。并将文件放在位置上。你不需要做LOAD DATA INPATH
  • 我有一个单独的 postgresql 数据库,我在 rscript 中连接到该数据库。我可以很容易地在 rscript 中的 postgresql 中编写一个表 schema.analysis_YYYYMMDD 以进行保管,然后只需附加到 shell 脚本中的 schema.all_analysis。

标签: bash hadoop hive


【解决方案1】:

您可能有一个创建脚本的模板,并在适当的地方将其替换为每天的当前日期。

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

#!/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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-09
    • 1970-01-01
    相关资源
    最近更新 更多