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呢?后续我会通过实际测试来探究这个疑问。



相关文章
|
Java Shell 分布式数据库
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
607 0
|
SQL 存储 分布式数据库
【通过Hive清洗、处理和计算原始数据,Hive清洗处理后的结果,将存入Hbase,海量数据随机查询场景从HBase查询数据 】
【通过Hive清洗、处理和计算原始数据,Hive清洗处理后的结果,将存入Hbase,海量数据随机查询场景从HBase查询数据 】
1053 0
|
存储 分布式数据库 数据库
Hbase学习二:Hbase数据特点和架构特点
Hbase学习二:Hbase数据特点和架构特点
859 0
|
缓存 监控 Shell
如何使用 HBase Shell 进行数据的实时监控和备份?
如何使用 HBase Shell 进行数据的实时监控和备份?
499 5
|
Shell 分布式数据库 Hbase
如何使用 HBase Shell 进行数据的批量导入和导出?
如何使用 HBase Shell 进行数据的批量导入和导出?
1525 5
|
缓存 监控 Shell
使用 HBase Shell 进行数据的实时监控和备份
使用 HBase Shell 进行数据的实时监控和备份
717 6
|
Shell 分布式数据库 Hbase
使用 HBase Shell 进行数据的批量导入和导出
使用 HBase Shell 进行数据的批量导入和导出
1611 6
|
存储 Java 分布式数据库
HBase构建图片视频数据的统一存储检索
HBase构建图片视频数据的统一存储检索
|
存储 分布式计算 分布式数据库
《HBase MapReduce之旅:我的学习笔记与心得》——跟随我的步伐,一同探索HBase世界,揭开MapReduce的神秘面纱,分享那些挑战与收获,让你在数据的海洋里畅游无阻!
【8月更文挑战第17天】HBase是Apache顶级项目,作为Bigtable的开源版,它是一个非关系型、分布式数据库,具备高可扩展性和性能。结合HDFS存储和MapReduce计算框架,以及Zookeeper协同服务,HBase支持海量数据高效管理。MapReduce通过将任务拆解并在集群上并行执行,极大提升处理速度。学习HBase MapReduce涉及理解其数据模型、编程模型及应用实践,虽然充满挑战,但收获颇丰,对职业发展大有裨益。
397 0
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版操作报错合集之使用 Event Time Temporal Join 关联多个 HBase 后,Kafka 数据的某个字段变为 null 是什么原因导致的
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
594 0