当前位置: 首页 > 面试题库 >

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

胡星汉
2023-03-14
问题内容

我已经使用hive在hbase中创建了一个表:

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 2.2.0集成的Spark2.3thriftserver。从火花直线运行。尝试将数据插入配置单元hbase表(以hbase作为存储的配置单元表)。插入到配置单元本机表是可以的。当插入到配置单元hbase表时,它会引发以下异常:

  • 问题内容: 我正在制作一个混合移动应用程序,我需要存储一些数据,例如,如果它是一个游戏:高分等..到目前为止,它能够使用jquery从JSON文件中读取数据..,但是是否可以写到JSON文件??! 还是有其他方法可以这样做? IDE-Eclipse(插件-IBM Worklight Studio) 只能使用HTML 5以及JS和JQ! 谢谢 (: 问题答案: 您可以将JSON写入本地存储,而只需使

  • 问题内容: 例如,我有一个具有以下内容的文件: 将另一个对象推入此数组以使文件看起来像的JavaScript代码是什么 我要问的原因是我在网上找到了很多有关如何使用AJAX从.json文件中提取数据的信息,但没有使用AJAX将新数据写入.json文件以用其他数据更新.json文件。 任何帮助,将不胜感激! 问题答案: 您必须清楚“ JSON”的含义。 某些人错误地使用术语JSON来指代简单的旧Ja

  • 我写了一个函数,允许我从剪贴板中获取四列数据,拆分它,添加一列额外的列,重新组合它,并将其导出为文本文件。 我有两个问题:- 是否可以创建一个文件,其中包含我使用此函数创建的表,以便将该表粘贴到某些文本的中间? 邪恶的笑(Evil Grin的缩写) 其次,我试图修改函数,使其将一个文件名作为变量;即< code>xyztoinp 等等……但这并没有产生带有新文件名的输出;有人知道这是怎么做到的吗?

  • 问题内容: 我在Python中有一个JSON对象。我正在使用Python DB-API和SimpleJson。我正在尝试将json插入MySQL表中。 目前出现错误,我相信这是由于JSON对象中的单引号引起的。 如何使用Python将JSON对象插入MySQL? 这是我收到的错误消息: 另一个错误供参考 这是我正在使用http://pastebin.com/q5QSfYLa的代码的链接 问题答案:

  • 我试图插入一个json字符串,它包含一个文档数组,但得到以下异常。 MongoDB服务器版本: Mongo-Java驱动程序版本: 我知道方法只用于插入一个文档,但这里是一个数组文档。我不确定在这里如何使用方法。 请引导。 要插入的JSON字符串: 异常日志: main.java GenericUtils.java pom.xml