【发布时间】:2014-05-21 04:25:41
【问题描述】:
我在 HDFS 中有数据。我想将该数据加载到 hbase 和 hive 表中。 我已经编写了一个 bash shell 脚本,其中我编写了一个 pig 脚本来将数据从 HDFS 加载到 HBASE,还编写了 hive 脚本来将数据从 HDFS 加载到 HIVE 表,这些脚本工作得很好。这里我的 HDFS 数据文件是相同的结构,我将所有数据文件加载到单个 hbase 和 hive 表中。
现在我的查询是假设如果我在 HDFS 目录中收到更多数据文件,并且如果我再次运行 shell 脚本,它将再次创建具有相同名称的 hbase 和 hive 表并告诉表已经存在。如何编写 hive 和 hbase 查询,以便第一次检查表是否存在,如果表不存在,它会第一次创建表并将数据从 HDFS 加载到 HBASE 和 Hive 表。如果表已经存在,那么它只会将数据插入到现有的 hbase 和 hive 表中。它不应该覆盖表中已经存在的数据。 如何做到这一点?
下面是我的脚本文件:myScript.sh
echo "create 'goodtable','gt'" | hbase shell
pig -f a.pig -param input=/user/user/d/
hive -f h.hql
在哪里 a.pig :
G = LOAD '$input' USING PigStorage(',') as (c1:chararray, c2:chararray,c3:chararray,c4:chararray,c5:chararray);
STORE G INTO 'hbase://goodtable' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('gt:name gt:state gt:phone_no gt:gender');
h.hql:
create external table hive_table(
id int,
name string,
state string,
phone_no int,
gender string) row format delimited fields terminated by ',' stored as textfile;
LOAD DATA INPATH '/user/user/d/' INTO TABLE hive_table;
【问题讨论】:
标签: hadoop hive hbase file-exists