/ / V Json Data não está sendo lido na Hive Table - hadoop, hive

V Json Data não está sendo lido na Hive Table - hadoop, hive

Eu estou lendo uma linha json dados do Twitter em uma Tabela Externa do Hive. A tabela é criada, mas ao ler os dados, recebo um erro. Eu quero ler as hashtags. Eu segui os passos abaixo:

hive (test)> add jar /usr/lib/hive/lib/hive-serdes-1.0-SNAPSHOT.jar;
Added /usr/lib/hive/lib/hive-serdes-1.0-SNAPSHOT.jar to class path
Added resource: /usr/lib/hive/lib/hive-serdes-1.0-SNAPSHOT.jar

Dados no arquivo:

hive (test)> dfs -cat abhijit_hdfs/flume2/tweets/Twitter_test.js;

"entities":{"symbols":[],"urls":[],"hashtags":[{"text":"AchieveMore","indices":[56,68]}]}

Declaração DDL

hive (test)> create external table tt4
> (entities struct<hashtags:array<struct<text:string>>>)
> row format serde "com.cloudera.hive.serde.JSONSerDe"
> LOCATION "/user/training/abhijit_hdfs/flume2/tweets/" ;
OK

Time taken: 0.193 seconds.
hive (test)> select * from tt4;
OK
Failed with exception java.io.IOException:org.apache.hadoop.hive.serde2.SerDeException: org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.LinkedHashMap out of VALUE_STRING token
at [Source: java.io.StringReader@1cc892e; line: 1, column: 1]
Time taken: 0.384 seconds

Por favor guie.

Respostas:

0 para resposta № 1

Isso parece um problema não relacionado ao Hadoop ou ao hive e, em vez disso, um erro de serializador JSON no qual o serde para o qual você está apontando usa org.codehaus.jackson

Ao tentar o JSON parece ter esse erro

 `Error: Parse error on line 1:"entities":{"symbols":[],"urls
----------^
Expecting "EOF", "}", ",", "]", got ":"`

Eu não tentei a configuração toda, mas o JSON parece estar perdendo um {no início para ser um bom JSON parsable

{"entities":{"symbols":[],"urls":[],"hashtags":[{"text":"AchieveMore","indices":[56,68]}]}}

0 para resposta № 2

Caros amigos este problema está resolvido Eu baixei e salvei o seguinte jar e reiniciei a minha claudera VM (uso não comercial) .Obrigado por sua ajuda que me deu direção para resolvê-lo.

hive> add jar /usr/lib/hive/lib/json-serde-1.3.6-jar-with-dependencies.jar;

Added /usr/lib/hive/lib/json-serde-1.3.6-jar-with-dependencies.jar to class path

Added resource: /usr/lib/hive/lib/json-serde-1.3.6-jar-with-dependencies.jar

hive> create external table t24

(entities struct<hashtags:array<struct<text:string>>>) row format serde "org.openx.data.jsonserde.JsonSerDe" LOCATION "/user/training/abhijit_hdfs/flume4/tweets/" ; OK Time taken: 1.623 seconds hive> select * from t24; OK {"hashtags":[{"text":"AchieveMore"}]} null Time taken: 1.13 seconds hive>


0 para resposta № 3

Funciona depois de adicionar os suportes de curvatura circundantes ({...}), ao usar o hcatalog JsonSerDe

create external table tt4
(
entities    struct<hashtags:array<struct<text:string>>>
)
row format serde "org.apache.hive.hcatalog.data.JsonSerDe"
;

select * from tt4
;

+---------------------------------------+
|               entities                |
+---------------------------------------+
| {"hashtags":[{"text":"AchieveMore"}]} |
+---------------------------------------+

O JsonSerDe para arquivos JSON está disponível no Hive 0.12 e posterior.

Em algumas distribuições, uma referência a hive-hcatalog-core.jar é requeridos. ADICIONAR JAR /usr/lib/hive-hcatalog/lib/hive-hcatalog-core.jar;

...

O JsonSerDe foi movido para o Hive do HCatalog e antes dele projeto hive-contrib. Foi adicionado à distribuição Hive por HIVE-4895.

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-RowFormats&SerDe