3

Apache Drill を使用して、HBase テーブルで SQL クエリを実行しています。列の 1 つの値は次のとおりです。

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 データをクエリできるかどうかです。

4

2 に答える 2

1

サブクエリを使用して、HBase 列のデータを JSON に変換することもできます。

select t.json.id 
from   (select convert_from(Students.address.street, 'JSON') json 
        from   hbase.Customer) t;
于 2015-05-13T12:51:39.553 に答える
1

わかった。他の誰かが同じ要件を持っている場合に備えて、この質問に対する答えを見つけました。

最初のステップは、組み込みの convert_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;
于 2015-03-31T07:46:10.353 に答える