Hive 是著名的數據倉庫軟件。它作為 Hadoop 的一個高級別構建特性,提供了一種簡單的 SQL 訪問方式,以便輕松地操作結構化的數據。Hive 更是以大數據的計算、存儲處理方案的標準 SQL 接口,被廣泛地運用在大規模數據倉庫中。
在 Hive 中處理 JSON 格式的數據十分常見,因此在使用 Hive 時,我們需要學習如何提取 JSON 字段中的所有值。
CREATE TABLE test_json ( id INT, name STRING, info STRING ); INSERT INTO TABLE test_json VALUES (1, "Tom", '{"age":18, "gender":"male", "hobby": ["music", "travel"]}' ), (2, "Lily", '{"age":20, "gender":"female", "hobby": ["reading", "swimming"]}' );
以表 test_json 的 info 字段為例,假設我們要提取其中所有的 hobby,可以通過如下語句實現:
SELECT get_json_object(info, '$.hobby[0]') as hobby1, get_json_object(info, '$.hobby[1]') as hobby2 FROM test_json
上述語句中,get_json_object() 函數可以根據 JSON 對象 key 的層次結構來提取其 value。
其中第二個參數 '$.hobby[0]' 代表 info 字段中的 hobby 值中的第一個元素。
通過如上語句,我們可以輕松地在 Hive 中提取 JSON 字段中的所有值。