hive测试服务器分区表感悟

-- hive表 创建时间,所在hdfs目录
show create table <tablename>;
-- hive表 更新时间
show table extended like <tablename>;

以下是,从公用服务器下载hive表为文件到本地,再上传至测试服务器的整个过程:

1、 首先去查看公用服务器的所建hive表放在哪个目录,然后将Hadoop的hive目录下的数据get到公用服务器本地自己所选目录。

1hive> show create table <tb1>;
1$> hadoop fs -ls hdfs://xxxx/app/xxxx/warehouse/tb1 #是否分区表
1$> hadoop fs -get hdfs://xxxx/app/xxxx/warehouse/tb1/pt=20180427/000000_0 /home/yourname/

2、将服务器本地hive表数据文件找到(分区表在文件夹里000000_0),sz到电脑本地。(上代码解决一半了)

1$> sz /home/yourname/000000_0

3、上传电脑本地数据文件到测试服务器,在测试服务器的hadoop的hive中新建表结构,将数据文件导入所新建hive表。

2$> rz  ##到 /home/yourname/000000_0
2$> hive -f tb2.hql

其中,在测试服务器 新建hive表,导入数据:

create table if NOT EXISTS tb2(
      student_id bigint
    ,name string
)
partitioned by (pt string)
-- 以下是普通txt文件的字段分隔符和行分隔符
-- ROW FORMAT DELIMITED
-- FIELDS TERMINATED BY '\t'
-- LINES TERMINATED BY '\n'
;

-- importance --
load data local inpath '/home/yourname/000000_0' overwrite into table tb2 PARTITION(pt='20180427');
#wq tb2.hql

最后,测试ok。

4、在3当中,最后使用hql方法导入数据有时会有bug,或者我之前就有错误。也可以这样:

2$> cp city_data.txt /tmp/ #复制自己目录下的文件到公共目录,以免读取不到自己路径,这个坑(hql: load data...)我栽过
    #(No files matching path file:/home/yourname/city_data)。。。
2$> hadoop fs -put /tmp/city_data.txt hdfs://xxx/bigdata/temp/city_data/ #搞定,复制数据到该hive表的hdfs路径即可。

猜你喜欢

转载自blog.csdn.net/sinat_20174131/article/details/80136903