복붙노트

[HADOOP] Hive의 JSON 문자열에서 선택한 값을 추출하는 방법

HADOOP

Hive의 JSON 문자열에서 선택한 값을 추출하는 방법

나는 Hive에서 다음과 같은 출력을 생성하는 간단한 쿼리를 실행하고있다.

|------|-----------------------------------------------------------|
| col1 | col2                                                      |
|------|-----------------------------------------------------------|
|   A  | {"variable1":123,"variable2":456,"variable3":789}         |                                          
|------|-----------------------------------------------------------|
|   B  | {"variable1":222,"variable2":333,"variable3":444}         |
--------------------------------------------------------------------

json 문자열을 구문 분석하고 SELECT 문 자체에서 각 토큰의 값을 가져 와서 WHERE 문을 통합하여 나에게 중요한 문자열 부분 만 반환 할 수 있어야합니다.

그래서 궁극적 인 결과는 다음과 같습니다.

|------------------------------------------|
| col1 |variable1 | variable2 | variable3  |                                      
|------------------------------------------|
|  A   |   123    |    456    |    789     |                                    
|------------------------------------------|
|  B   |   222    |    333    |    444     |
--------------------------------------------

나는 esnaples에 지정된 인수 구조를 사용하여 SPLIT 및 GET_JSON_OBJECT를 포함하여 다양한 함수를 사용하여 시도했지만 다음과 같은 모든 오류를 반환합니다.

No matching method for class org.apache.hadoop.hive.ql.udf.UDFJson 
with (struct<...>, string). Possible choices: _FUNC_(string, string)

누군가 내가 내가하려는 일이 실현 가능한지 또는 내가 잘못 가고있는 곳을 설명 할 수 있습니까?

미리 감사드립니다

해결법

  1. ==============================

    1.

    select col1, get_json_object(col2,'$.variable1') as variable1,
    get_json_object(col2,'$.variable2') as variable2,
    get_json_object(col2,'$.variable3') as variable3 
    from json_test
    

    출력을 테이블 (예 : json_test)에 넣으면 이런 식으로 구문 분석 할 수 있습니다. 이러한 결과를 얻기 위해 쿼리를 조정할 수도 있습니다.

    산출:

    col1 |variable1 |variable2 |variable3 |
    -----|----------|----------|----------|
    A    |123       |456       |789       |
    B    |222       |333       |444       |
    
  2. from https://stackoverflow.com/questions/45514710/how-to-extract-selected-values-from-json-string-in-hive by cc-by-sa and MIT license