使用apachedrill获取hbase中的嵌套json数据

ddrv8njm  于 2021-06-09  发布在  Hbase
关注(0)|答案(2)|浏览(366)

我使用apachedrill在hbase表上运行sql查询。其中一列中的值为:

0: jdbc:drill:schema:hbase:zk=localhost> select cast(address['street'] as varchar(20)) from hbase.students;
+------------+
|   EXPR$0   |
+------------+
| {"id": 123} |
+------------+
1 row selected (0.507 seconds)

我想进入 id 使用查询的字段。比如:

0: jdbc:drill:schema:hbase:zk=localhost> select tbl.address['street']['id'] from hbase.students as tbl;
+------------+
|   EXPR$0   |
+------------+
| null       |
+------------+

如你所见,这是行不通的。我在一个文件中遇到了类似的关于json数据的查询。我的问题是我能否在hbase中查询json数据。

svujldwt

svujldwt1#

好 啊。我找到了这个问题的答案,以防别人有同样的要求。
第一步是使用内置的convert\u from()函数将hbase数据转换为json。可以创建一个视图来运行查询。

> create or replace view Street as select convert_from(Students.address.street, 'JSON') json from hbase.Customer;

然后,对视图运行查询

> select * from Street;
> select Street.json.id from Street;
ejk8hzay

ejk8hzay2#

您还可以使用子查询将hbase列中的数据转换为json:

select t.json.id 
from   (select convert_from(Students.address.street, 'JSON') json 
        from   hbase.Customer) t;

相关问题