hbase的表映射到hive中

简介: 1.本文主要说一下怎么把hbase中的表映射到hive中,说之前我们先简单说一下hive的内部表和外部表的区别;(1),被external关键字修饰的表是外部表,没有被external关键字修饰的表是内部表.(2),内部表数据由Hive自身管理,外部表数据由HDFS管理.(3),内部表数据存储的位置是hive.metastore.warehouse.dir.外部表数据的存储位置由自己确定.(4),删除内部表会直接删除元数据(metadata)及存储数据;删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除;

1.本文主要说一下怎么把hbase中的表映射到hive中,说之前我们先简单说一下hive的内部表和外部表的区别;


(1),被external关键字修饰的表是外部表,没有被external关键字修饰的表是内部表.


(2),内部表数据由Hive自身管理,外部表数据由HDFS管理.


(3),内部表数据存储的位置是hive.metastore.warehouse.dir.外部表数据的存储位置由自己确定.


(4),删除内部表会直接删除元数据(metadata)及存储数据;删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除;


2.建表语句


(1)内部表:


CREATE TABLE `spark_error_info`(
  `data` string COMMENT '报错的数据',
  `error_time` string COMMENT '报错的时间',
  `error_info` string COMMENT '报错信息'
 )
ROW FORMAT DELIMITED 
  FIELDS TERMINATED BY ' ' 
  LINES TERMINATED BY '\n';
加载数据:  load data local inpath '/home/hdfs/data' overwrite into table spark_error_info;


(2),外部表:


create external table test2(id int,name string,age int,tel string)
     ROW FORMAT DELIMITED
     FIELDS TERMINATED BY ','
     STORED AS TEXTFILE
     location '/user/hive/external/test';


加载数据:  load data local inpath '/home/hdfs/data' overwrite into table test2;


(3)外部表(hbase表映射到hive中)


CREATE EXTERNAL TABLE cbd_cds.jason_test(
key string,
shop string,
future_end_time string
)   
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'   
WITH SERDEPROPERTIES ("hbase.columns.mapping" =":key,f1:shop,f1:future_end_time")   
TBLPROPERTIES("hbase.table.name" = "cbd:test");


注意点:


   1、hbase中的空cell在hive中会补null


   2、hive和hbase中不匹配的字段会补null


   3、Bytes类型的数据,建hive表示加#b


   4、其中:key代表的是hbase中的rowkey,hive中也要有一个key与之对应,不然会报错,f1指的是hbase的列族.创建完后,会自动把hbase表里的数据同步到hive中,


(4)分区表


CREATE TABLE `test_partition`(
`data` string COMMENT 'json数据',
`enter_time` string COMMENT '入库时间'
 )
partitioned by (day_time string)
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ' ' 
LINES TERMINATED BY '\n';


加载数据:load data local inpath '/root/test/jason' into table test_partition partition(day_time='2018-08-03');指定数据具体导入哪个分区中.


注意:


----fields terminated by '\t'  通过'\t'分割字段

----lines terminated by '\n'   通过'\n'结束一行字段

相关文章
|
SQL 存储 HIVE
Hive中的表是如何定义的?请解释表的结构和数据类型。
Hive中的表是如何定义的?请解释表的结构和数据类型。
324 0
|
SQL 消息中间件 数据处理
DataX读取Hive Orc格式表丢失数据处理记录
DataX读取Hive Orc格式表丢失数据处理记录
790 0
|
机器学习/深度学习 分布式计算 Hadoop
一种HBase表数据迁移方法的优化
一种HBase表数据迁移方法的优化
322 0
|
SQL 存储 分布式数据库
分布式存储数据恢复—hbase和hive数据库数据恢复案例
分布式存储数据恢复环境: 16台某品牌R730xd服务器节点,每台服务器节点上有数台虚拟机。 虚拟机上部署Hbase和Hive数据库。 分布式存储故障: 数据库底层文件被误删除,数据库不能使用。要求恢复hbase和hive数据库。
529 12
|
SQL 关系型数据库 MySQL
Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)
【2月更文挑战第9天】Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)
869 7
|
SQL Java 分布式数据库
实现HBase表和RDB表的转化(附Java源码资源)
该文介绍了如何将数据从RDB转换为HBase表,主要涉及三个来源:RDB Table、Client API和Files。文章重点讲解了RDB到HBase的转换,通过批处理思想,利用RDB接口批量导出数据并转化为`List<Put>`,然后导入HBase。目录结构包括配置文件、RDB接口及实现类、HBase接口及实现类,以及一个通用转换器接口和实现。代码中,`RDBImpl`负责从RDB读取数据并构造`Put`对象,`HBaseImpl`则负责将`Put`写入HBase表。整个过程通过配置文件`transfer.properties`管理HBase和RDB的映射关系。
198 3
实现HBase表和RDB表的转化(附Java源码资源)
|
SQL 缓存 关系型数据库
ClickHouse(19)ClickHouse集成Hive表引擎详细解析
Hive引擎允许对HDFS Hive表执行 `SELECT` 查询。目前它支持如下输入格式: -文本:只支持简单的标量列类型,除了 `Binary` - ORC:支持简单的标量列类型,除了`char`; 只支持 `array` 这样的复杂类型 - Parquet:支持所有简单标量列类型;只支持 `array` 这样的复杂类型
715 1
|
SQL 存储 分布式计算
【Hive】hive内部表和外部表的区别
【4月更文挑战第14天】【Hive】hive内部表和外部表的区别
|
SQL 存储 分布式计算
Hive【基础 01】核心概念+体系架构+数据类型+内容格式+存储格式+内外部表(部分图片来源于网络)
【4月更文挑战第6天】Hive【基础 01】核心概念+体系架构+数据类型+内容格式+存储格式+内外部表(部分图片来源于网络)
1022 1
|
SQL 消息中间件 Kafka
Flink部署问题之hive表没有数据如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。