【发布时间】: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。