使用Hive将数据插入Hbase(JSON文件)

我已经使用hivehbase中创建了一个表:

hive> CREATE TABLE hbase_table_emp(id int, name string, role string) 

STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'

WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:name,cf1:role")

TBLPROPERTIES ("hbase.table.name" = "emp");

并创建了另一个表来加载数据:

hive> create table testemp(id int, name string, role string) row format delimited fields terminated by '\t';

hive> load data local inpath '/home/user/sample.txt' into table testemp;

最后将数据插入到hbase表中:

hive> insert overwrite table hbase_table_emp select * from testemp;

hive> select * from hbase_table_emp;

OK

123 Ram TeamLead

456 Silva Member

789 Krishna Member

time taken: 0.160 seconds, Fetched: 3 row(s)

该表在hbase中如下所示:

hbase(main):002:0> scan 'emp'

ROW COLUMN+CELL

123 column=cf1:name, timestamp=1422540225254, value=Ram

123 column=cf1:role, timestamp=1422540225254, value=TeamLead

456 column=cf1:name, timestamp=1422540225254, value=Silva

456 column=cf1:role, timestamp=1422540225254, value=Member

789 column=cf1:name, timestamp=1422540225254, value=Krishna

789 column=cf1:role, timestamp=1422540225254, value=Member

3 row(s) in 2.1230 seconds

我可以对JSON文件做同样的事情:

 {"id": 123, "name": "Ram", "role":"TeamLead"}

{"id": 456, "name": "Silva", "role":"Member"}

{"id": 789, "name": "Krishna", "role":"Member"}

并做:

hive> load data local inpath '/home/user/sample.json' into table testemp;

请帮忙 !:)

回答:

您可以使用该get_json_object函数将数据解析为JSON对象。例如,如果您使用JSON数据创建登台表:

DROP TABLE IF EXISTS staging;

CREATE TABLE staging (json STRING);

LOAD DATA LOCAL INPATH '/local/path/to/jsonfile' INTO TABLE staging;

然后使用get_json_object提取要加载到表中的属性:

INSERT OVERWRITE TABLE hbase_table_emp SELECT

get_json_object(json, "$.id") AS id,

get_json_object(json, "$.name") AS name,

get_json_object(json, "$.role") AS role

FROM staging;

有此功能的更全面的讨论在这里。

以上是 使用Hive将数据插入Hbase(JSON文件) 的全部内容, 来源链接: utcz.com/qa/421999.html

回到顶部