Hadoop 从零开始学习系列-hive从元数据生成表结构、分区等建表语句
2015-01-26 13:48
399 查看
继上一章说到倒完数据后,这次需要把表结构及分区信息迁移到新集群上,并且load数据。
由于表个数及分区个数太多。所以必须通过元数据生成建表及分区语句。
元数据的配置在hive-site.xml
配置图如下:
此处使用pgsql来存储。
所有的元数据表如下:
其中比较重要的表为:
TBLS:存储所有表信息的表
PARTITION_KEYS:存储所有分区的key的表
COLUMNS_V2:存储表的所有列的表
PARTITIONS:存储所有分区信息的表
建立postgreSql中的group_concat函数
建立加工信息的语句为:
此语句可以取出每个表的所有列、分区等信息。
建立java工程,使用java来生成建表、分区、加载数据等sql语句。
工程已上传,地址为:
中间没有对没有分区的表记录处理,需要处理,但是CSDN上这个文件不知道怎么改,CSDN真是体验不好。。
生成完sql后,执行完sql,即可把表结构及转移过来的数据全部迁移过来。
由于表个数及分区个数太多。所以必须通过元数据生成建表及分区语句。
元数据的配置在hive-site.xml
配置图如下:
此处使用pgsql来存储。
所有的元数据表如下:
其中比较重要的表为:
TBLS:存储所有表信息的表
PARTITION_KEYS:存储所有分区的key的表
COLUMNS_V2:存储表的所有列的表
PARTITIONS:存储所有分区信息的表
建立postgreSql中的group_concat函数
create aggregate array_accum ( sfunc = array_append, basetype = anyelement, stype = anyarray, initcond = '{}' ); CREATE OR REPLACE FUNCTION _group_concat(text, text) RETURNS text AS $$ SELECT CASE WHEN $2 IS NULL THEN $1 WHEN $1 IS NULL THEN $2 ELSE $1 operator(pg_catalog.||) ',' operator(pg_catalog.||) $2 END $$ IMMUTABLE LANGUAGE SQL; CREATE AGGREGATE group_concat ( BASETYPE = text, SFUNC = _group_concat, STYPE = text );
建立加工信息的语句为:
SELECT T1."TBL_NAME", U.*, U1."COLUMNS", U1."COLUMNSTYPE", U2."PARTS" FROM (SELECT T."TBL_ID", group_concat(P."PKEY_NAME") AS "PKEYNAMES", group_concat(P."PKEY_TYPE") AS "PKEYTYPES" FROM "TBLS" T LEFT JOIN "PARTITION_KEYS" P ON( T."TBL_ID" = P."TBL_ID") GROUP BY T."TBL_ID") U, (SELECT group_concat(V."COLUMN_NAME") AS "COLUMNS", group_concat(V."TYPE_NAME") AS "COLUMNSTYPE", T."TBL_ID" FROM "COLUMNS_V2" V, "CDS" C, "SDS" S, "TBLS" T WHERE V."CD_ID" = C."CD_ID" AND C."CD_ID" = S."CD_ID" AND S."SD_ID" = T."SD_ID" GROUP BY T."TBL_ID") U1, (SELECT T."TBL_ID", GROUP_CONCAT(P."PART_NAME") AS "PARTS" FROM "TBLS" T LEFT JOIN "PARTITIONS" P <span style="white-space:pre"> </span>ON(T."TBL_ID" = P."TBL_ID") GROUP BY T."TBL_ID") U2, "TBLS" T1 WHERE U."TBL_ID" = U1."TBL_ID" AND U."TBL_ID" = T1."TBL_ID" AND T1."TBL_ID" = U2."TBL_ID"
此语句可以取出每个表的所有列、分区等信息。
建立java工程,使用java来生成建表、分区、加载数据等sql语句。
工程已上传,地址为:
http://download.csdn.net/detail/jdzms23/8397409
中间没有对没有分区的表记录处理,需要处理,但是CSDN上这个文件不知道怎么改,CSDN真是体验不好。。
生成完sql后,执行完sql,即可把表结构及转移过来的数据全部迁移过来。
相关文章推荐
- Hadoop 从零开始学习系列-hive与hbase外部关联表建立及数据导入
- Hadoop 从零开始学习系列-hadoop版本升级之文件迁移
- 大数据学习篇:hadoop深入浅出系列之HDFS(二)——HDFS体系结构
- 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解
- 【Hadoop】一图学习HDFS源码结构系列——内存存储Lazy persist
- Hadoop 从零开始学习系列-旧版本hadoop工程升级新版本问题及解决
- hadoop入门学习系列之四hadoop的hive安装和配置
- [置顶] 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解
- 从零开始系列-R语言基础学习笔记之二 数据结构(二)
- Hadoop 从零开始学习系列-bulk load研究
- 从零开始系列-R语言基础学习笔记之二 数据结构(一)
- Hadoop Hive概念学习系列之Hive的元数据分析(三)
- 大数据学习系列之八----- Hadoop、Spark、HBase、Hive搭建环境遇到的错误以及解决方法
- hadoop学习工作总结(六)之生成hive的一个存储过程
- 【hadoop】16、学习hive操作语句
- Hadoop Hive概念学习系列之hive里的分区(九)
- hadoop学习之HIVE(3.3):hiveSQL语句详解(DML)
- 大数据学习系列之八----- Hadoop、Spark、HBase、Hive搭建环境遇到的错误以及解决方法
- 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机)
- 从零开始系列-R语言基础学习笔记之二 数据结构(一)