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

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
spark sql maven idea打包
前提 ,给 自己 的mysql 本地添加 远程访问权限 mysql> grant all privileges on *.* to root@"%" identified by 'root' with grant option; mysql> flush privileges; 测试远程连接是否通? mysql -h10.2.6.60 -uroot -proot sql demo package com.baoy.sql import java.sql.DriverManager import org.apache.spark.rdd.JdbcRDD import org.apache.spark.{SparkConf, SparkContext} /** * Created by John on 2016/4/1. * com.baoy.sql.Sql */ object Sql { def main(args: Array[String]) { val sparkConf = new SparkConf() .setAppName("streamsql") val...
-
下一篇
Impala、Hive性能简单对比测试
Impala、Hive性能简单对比测试 一、测试环境 操作系统:CentOS6.4 大数据平台:CDH5、Hive、Impala、MapReduce 集群规模:3台服务器,每台64G内存(原谅小气的公司给了如此糟糕的开发环境) Impala共三几个后台Impalad进程,两个正常,一个失效,如图: 一、HBase加载数据 首先,在HBase中创建一个表,表中列簇为f,有两列dn、fn; 其次,利用Java API在HBase中产生约1000万条测试数据,代码如下: @SuppressWarnings("static-access") @Test public void testPutBasic() { for (int m = 0; m < 20; m++) { new Thread() { @Override public void run() { int j = 0; for (int i = 0; i < 1000000; i++) { Random random = new Random(); Hash...
相关文章
文章评论
共有0条评论来说两句吧...