千家信息网

Hive与HBase的整合过程中的基本命令操作是怎样的

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,Hive与HBase的整合过程中的基本命令操作是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一:Hive与Hba
千家信息网最后更新 2025年01月23日Hive与HBase的整合过程中的基本命令操作是怎样的

Hive与HBase的整合过程中的基本命令操作是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

一:Hive与Hbase的整合过程。

1.创建HBase识别的表,然后查看表是否创建成功。

hive:

hive> CREATE TABLE hivehbase(key int, value string)
> STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
> WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,columnfamily1:val")
> TBLPROPERTIES ("hbase.table.name" = "hbasehive");

hive> CREATE TABLE hivehbase(key int, value string)    > STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'     > WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,columnfamily1:val")    > TBLPROPERTIES ("hbase.table.name" = "hbasehive");OKTime taken: 9.881 secondshive> show tables;OKhivehbasetesthiveTime taken: 0.055 seconds, Fetched: 2 row(s)

hbase:

hbase(main):002:0> listTABLE  hbasehive

注意: hbase.table.name 定义在hbase的table名称
hbase.columns.mapping 定义在hbase的列族

2.使用sql往hivehbase中导入数据,将testhive表中的以下数据导入到hivehbase中,如下:

hive> select * from testhive;OK1       Berg1       Berg2       Cccc3       Xxxx4       Jjjj

开始导入数据,即: 注意overwrite,相同的数据记录会覆盖点,复制。

hive> insert overwrite table hivehbase select * from testhive;

导入数据成功后,在查询该表中数据,即:

hive> select * from hivehbase;OK1       Berg2       Cccc3       Xxxx4       JjjjTime taken: 0.458 seconds, Fetched: 4 row(s)

然后进入hbase,查看hbase中hbasehive表中是否存在数据:

hbase(main):004:0> scan 'hbasehive'ROW                       COLUMN+CELL                                                              1                        column=columnfamily1:val, timestamp=1464514508295, value=Berg            2                        column=columnfamily1:val, timestamp=1464514508295, value=Cccc            3                        column=columnfamily1:val, timestamp=1464514508295, value=Xxxx            4                        column=columnfamily1:val, timestamp=1464514508295, value=Jjjj           4 row(s) in 0.0470 seconds

可以看到,在hive中往hivehbase中添加的数据,已经存在在hbase中的hbasehive表中了,
那反过来,在hbase中往hbasehive中添加的数据,在hive中的hivehbase能否查看到了?

往hbase中的hbasehive中添加一条数据记录,如下:

hbase(main):007:0> put 'hbasehive', '5','columnfamily1:val','Yyyy'

然后在在hive中查看hivehbase中的表数据,可以看到:

hive> select * from hivehbase;
OK
1 Berg
2 Cccc
3 Xxxx
4 Jjjj
5 Yyyy   : 已经说明,在hbase中操作数据,也能够在hive中查询到。

3.hive访问已经存在的hbase,使用CREATE EXTERNAL TABLE,

在hbase中准备一张 student表,并为其表中插入三条数据记录,即:

hbase(main):026:0> create 'student','info'


hbase(main):028:0> put 'student','1','info:name','Berg'

hbase(main):029:0> put 'student','2','info:name','Hbase'

hbase(main):030:0> put 'student','3','info:name','hive'

使用CREATE EXTERNAL TABLE:

CREATE EXTERNAL TABLE hbase_person(key string, value string,value string,value int) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = "info:name,info:sex,info:age")
TBLPROPERTIES("hbase.table.name" = "person");

如下:

hive> CREATE EXTERNAL TABLE hivehbase_student(key int, value string)
> STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
> WITH SERDEPROPERTIES ("hbase.columns.mapping" = "info:name")
> TBLPROPERTIES("hbase.table.name" = "student");
OK


查看表是否生成:
hive> show tables;
OK
hivehbase_student : 表示已经生成存在。


然后在查看hive中 这张表的数据:
hive> select * from hivehbase_student;
OK
1 Berg
2 Hbase
3 hive

结果表名,该数据跟hbase中student表中的数据一致。

****************************************************************************************************

完成上述操作后,在接着往下看:

二:多列和多列族(Multiple Columns and Families)

1.在hive中操作数据库,如下:

先准备一张元数据表,multiplehive,往该表中存放多条数据记录,操作如下:

hive> create table multiplehive    > (id int, name string,sex string, age int)    > ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE;OKTime taken: 0.179 secondshive> load data local inpath '/home/hadoop/mytestdata/multiplehive.txt' into table multiplehive;Loading data to table default.multiplehiveOKTime taken: 0.736 secondshive> select * from multiplehive;OK1       Berg    f       212       BigData m       20Time taken: 0.186 seconds, Fetched: 2 row(s)

CREATE TABLE hivehbase_person(key int, name string, sex string, age int)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:name,info:sex,info:age")
TBLPROPERTIES("hbase.table.name" = "hbasehive_person");

hive> CREATE TABLE hivehbase_person(key int, name string, sex string, age int)     > STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'    > WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:name,info:sex,info:age")    > TBLPROPERTIES("hbase.table.name" = "hbasehive_person");OK

创建关联表成功后,在hive中往表 hivehbase _person表中插入准备好的数据,即:

hive> insert overwrite table hivehbase_person select id,name,sex,age from multiplehive;

然后在查看这张表的数据,如下:

hive> select * from hivehbase_person;OK1       Berg    f       212       BigData m       20Time taken: 0.679 seconds, Fetched: 2 row(s)

再去Hbase中,查看这张表的数据:hbase(main):039:0> scan 'hbasehive_person'

hbase(main):039:0> scan 'hbasehive_person'ROW                       COLUMN+CELL                                                              1                        column=info:age, timestamp=1464522188307, value=21                       1                        column=info:name, timestamp=1464522188307, value=Berg                    1                        column=info:sex, timestamp=1464522188307, value=f                        2                        column=info:age, timestamp=1464522188307, value=20                       2                        column=info:name, timestamp=1464522188307, value=BigData                 2                        column=info:sex, timestamp=1464522188307, value=m                       2 row(s) in 8.1630 seconds

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

0