Impala之加载HBase数据

简介:         Impala如何加载HBase数据?本文将为大家进行详细介绍Impala加载HBase数据的步骤。         第一步:HBase创建表(或选择已有表)         HBase shell命令行执行命令: create 'impala_hbase_test...

        Impala如何加载HBase数据?本文将为大家进行详细介绍Impala加载HBase数据的步骤。


        第一步:HBase创建表(或选择已有表)

        HBase shell命令行执行命令:

create 'impala_hbase_test_table', {NAME => 'f', VERSION => 3, COMPRESSION => 'SNAPPY'}
        如图所示:


        第二步:HBase表存入数据

        利用Java API往HBase写入数据,示例代码如下:

					int j = 0;
					for (int i = 0; i < 10000; i++) {
						Random random = new Random();

						Hashtable<String, String> pColumns = new Hashtable<String, String>();
						pColumns.put("dn", "dn" + random.nextInt(100));
						pColumns.put("fn", "fn" + random.nextInt(100));

						try {
							HBaseUtil.postBasic("impala_hbase_test_table",
									this.getName() + j++, "f", pColumns, null);
						} catch (Exception e2) {
							// TODO Auto-generated catch block
							e2.printStackTrace();
						}
					}
        其中HBaseUtil的postBasic()方法为HBase Java API入库操作,写入的表为impala_hbase_test_table,rowkey为线程名加递增数,列簇为f,写入的列为dn、fn,值分别为列名加随机数。

        第三步:Hive创建Database,并使用

        在Hive Shell命令行,执行Database创建及使用命令,如下图所示:


        第四步:将HBase数据加载到Hive

        在Hive Shell命令行执行如下命令:

CREATE EXTERNAL TABLE impala_hbase(
rk string,
un tinyint,
dn string,
fn string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.hbase.HBaseSerDe'
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key, f:un, f:dn, f:fn")
TBLPROPERTIES("hbase.table.name" = "impala_hbase_test_table");
        如下图所示:


        其中,在WITH SERDEPROPERTIES选项中指定Hive外部表字段到HBase列的映射,其中“:key”对应于HBase中的rowkey,其余的就是列簇f中的列名。最后在TBLPROPERTIES中指定了HBase中要进行映射的表名。

        第五步:Impala与Hive进行元数据同步

        在Impala Shell命令行,执行操作INVALIDATE METADATA;

        如下图所示:


        第六步:Impala切换到与Hive相同的DataBase,进行数据验证

        相关命令如下图所示:

        1、Impala切换DataBase


        2、Impala验证数据


        3、Hive验证数据


        最终,10000条数据在Hive与Impala中均能被查询到,证明Impala加载HBase数据成功!


        但是,这里有个问题,我们发现,即便是仅有1万条数据,Impala的count也比Hive的count耗时小的多,前者为1.28s,后者为81.055s,那么是不是意味着Impala性能远远好于Hive呢?后续我会通过实际测试来探究这个疑问。



相关实践学习
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
6月前
|
SQL 存储 分布式数据库
【通过Hive清洗、处理和计算原始数据,Hive清洗处理后的结果,将存入Hbase,海量数据随机查询场景从HBase查询数据 】
【通过Hive清洗、处理和计算原始数据,Hive清洗处理后的结果,将存入Hbase,海量数据随机查询场景从HBase查询数据 】
|
3月前
|
分布式计算 分布式数据库 API
Spark与HBase的集成与数据访问
Spark与HBase的集成与数据访问
|
3月前
|
分布式数据库 Hbase
HBase的数据删除是如何进行的?
HBase的数据删除是如何进行的?
101 0
|
4月前
|
分布式数据库 Hbase
HBase 清空表数据
HBase 清空表数据
49 0
|
4月前
|
存储 分布式计算 分布式数据库
对给定的数据利用MapReduce编程实现数据的清洗和预处理,编程实现数据存储到HBase数据库,实现数据的增删改查操作接口
对给定的数据利用MapReduce编程实现数据的清洗和预处理,编程实现数据存储到HBase数据库,实现数据的增删改查操作接口
27 0
|
11月前
|
分布式计算 Hadoop 分布式数据库
《CDP企业数据云平台从入门到实践》——HBase 迁移到 CDP(1)
《CDP企业数据云平台从入门到实践》——HBase 迁移到 CDP(1)
143 0
|
11月前
|
Shell 分布式数据库 API
《CDP企业数据云平台从入门到实践》——HBase 迁移到 CDP(2)
《CDP企业数据云平台从入门到实践》——HBase 迁移到 CDP(2)
120 0
|
11月前
|
安全 Shell 测试技术
《CDP企业数据云平台从入门到实践》——HBase 迁移到 CDP(3)
《CDP企业数据云平台从入门到实践》——HBase 迁移到 CDP(3)
131 0
|
Shell 分布式数据库 Hbase
hbase Normalizer解决预分区错误,在不动数据的情况下完美解决热点问题
hbase Normalizer解决预分区错误,在不动数据的情况下完美解决热点问题
165 0
hbase Normalizer解决预分区错误,在不动数据的情况下完美解决热点问题
|
SQL 缓存 分布式计算
HBase查询一张表的数据条数的方法
HBase查询一张表的数据条数的方法
792 0
HBase查询一张表的数据条数的方法