복붙노트

[HADOOP] STRUCT를 사용한 간단한 Hive 쿼리의 구문 오류는 어디에 있습니까?

HADOOP

STRUCT를 사용한 간단한 Hive 쿼리의 구문 오류는 어디에 있습니까?

Hive에서 간단한 테이블을 가져 오자.

hive> CREATE EXTERNAL TABLE tweets (id BIGINT, id_str STRING, user STRUCT<id:BIGINT, screen_name:STRING>)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.JsonSerde'
LOCATION '/projets/tweets';

OK
Time taken: 2.253 seconds

hive> describe tweets.user;

OK
id                      bigint                  from deserializer
screen_name             string                  from deserializer
Time taken: 1.151 seconds, Fetched: 2 row(s)

여기서 구문 오류가 어디 있는지 알 수 없습니다.

hive> select user.id from tweets limit 5;
OK
Failed with exception java.io.IOException:org.apache.hadoop.hive.ql.metadata.HiveException: Error evaluating user.id
Time taken: 0.699 seconds

하이브 버전 1.2.1을 사용하고 있습니다.

해결법

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

    1.드디어 답을 찾았습니다. JSON을 serialize / deserialize하는 데 사용되는 JAR에 문제가있는 것 같습니다. 기본 아파치 (Apache)는 내가 가지고있는 데이터에 대해 좋은 작업을 수행 할 수 없습니다.

    드디어 답을 찾았습니다. JSON을 serialize / deserialize하는 데 사용되는 JAR에 문제가있는 것 같습니다. 기본 아파치 (Apache)는 내가 가지고있는 데이터에 대해 좋은 작업을 수행 할 수 없습니다.

    나는이 모든 전형적인 JAR (괄호 안의 'ROW FORMAT SERDE'클래스)을 시도했다.

    모두 다 다른 종류의 오류를주었습니다. 나는 그 (것)들을 거기 목록으로 만든다 그래서 다음 녀석은 그 (것)들을 Google 수있다 :

    마지막으로, 작동중인 JAR은 여기에서 찾을 수있는 json-serde-1.3-jar-with-dependencies.jar입니다. 이것은 'STRUCT'로 작업 중이며 일부 잘못된 JSON을 무시할 수도 있습니다. 나는이 수업을 만드는 데에도 사용해야한다.

     ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
     WITH SERDEPROPERTIES ("ignore.malformed.json" = "true")
     LOCATION ...
    

    필요한 경우 여기 또는 여기에서 다시 컴파일 할 수 있습니다. 나는 첫 번째 저장소를 시도하고 필요한 libs를 추가 한 후 나를 위해 잘 컴파일하고있다. 저장소도 최근에 업데이트되었습니다.

  2. from https://stackoverflow.com/questions/32785117/where-is-the-syntax-error-on-this-simple-hive-query-with-struct by cc-by-sa and MIT license