我正在构建一个网络分析应用程序我想要一个低延迟的休息终点来获取json并将其存储在hbase中。
我读过关于kafka&风暴似乎是将数据导入hbase的一种非常好的方式,看起来好像它处理的数据是扁平结构,我无法想象它如何与我的用例一起工作。
我将收集的数据示例如下json
{
page: "www.url.com/checkout.html",
cat: "checkout"
browser: "IE 6",
ipAddress: "127.0.0.1",
userId: 10000,
session: 20000,
timeOnPage: null,
user: {
name: "John", gender: "Male", age: 25, lat: 0.1, long: 0.1
},
purchased: {
products: [
{ name: prod1, cost: 100 },
{ name: prod2, cost: 200 },
{ name: prod3, cost: 300 }
],
total: 600
},
mouseMovement: [
]
}
正如您所看到的,数据不是平面模型,某些数据也会在稍后更新。
我曾经想过这个数据结构会很好地适应hbase吗?但也许我完全错了?
答案 0 :(得分:1)
您可以将hive与Hbase集成,并使用HiveQL进行查询:
用于填写您的Json文件:
{"id": 123, "name": "Ram", "role":"TeamLead"}
{"id": 456, "name": "Silva", "role":"Member"}
{"id": 789, "name": "Krishna", "role":"Member"}
您可以使用get_json_object
函数将数据解析为JSON对象。例如,如果使用JSON数据创建临时表:
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;
希望这有助于你