1

HiveQL は、配列データ型の array_contains() 関数を提供し、json サポートも提供します。

ただし、get_json_object() 関数は、json 配列をフェッチするときに配列データ型を返しません。つまり、結果の json_array で array_contains() 関数を使用することはできません。

HiveQL で json 配列の array_contains() 機能を模倣する最良の方法は何ですか?

具体的な例として、次のものが true を返すようにします。

array_contains_mimic(get_json_object({"array":["one", "two"]}, '$.array'), "one")

4

1 に答える 1

4

Brickhouse ライブラリ ( http://github.com/klout/brickhouse ) には、JSON を処理するための拡張 UDF があります。

レンガ造りの UDF "json_split" は、配列に対応する JSON テキストを変換し、それを Hive 配列に変換します。すなわち。必要なものを実装できます

array_contain( json_split( get_json_object('{"array":["one"],"two"]}', '$.array'), 'one')

Brickhouse では、任意の Hive 構造をシリアライズおよびデシリアライズすることもできるため、より複雑な操作を行うことができます。

from_json を使用すると、式は次のようになります。

array_contains( map_index( from_json( str, map( "string", array("string"))),"array"),"one)
于 2013-11-09T02:01:35.070 に答える