разбор JSON записи как NULL - PullRequest
       12

разбор JSON записи как NULL

0 голосов
/ 25 февраля 2019

У меня есть простая таблица улья:

hive> show create table  tweets;
OK
CREATE EXTERNAL TABLE `tweets`(
  `json_body` string COMMENT 'from deserializer')
ROW FORMAT SERDE
  'org.apache.hive.hcatalog.data.JsonSerDe'
STORED AS INPUTFORMAT
  'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  'file:/tmp/1'
TBLPROPERTIES (
  'bucketing_version'='2',
  'transient_lastDdlTime'='1551081429')
Time taken: 0.124 seconds, Fetched: 13 row(s)

в папке / tmp / 1 есть файл test.json, и единственным содержимым в файле является {"appname": "app-name"}

выбрать из твитов возвращает NULL

hive> select * From tweets;
OK
NULL
Time taken: 0.097 seconds, Fetched: 1 row(s)

Я знаю, что формат файла неверен или что-то еще происходит.Может кто-нибудь, пожалуйста, помогите.

1 Ответ

0 голосов
/ 25 февраля 2019

Если вы хотите, чтобы JsonSerDe анализировал атрибуты, то создайте таблицу следующим образом:

CREATE EXTERNAL TABLE tweets (
  appname string 
)
ROW FORMAT SERDE
  'org.apache.hive.hcatalog.data.JsonSerDe'
LOCATION '/tmp/1' --this is HDFS/S3 location
;

Читайте также документы о JsonSerDe

И есливы хотите получить весь объект JSON в виде строки json_body, тогда вам не нужен JSON SerDe, вместо этого используйте TEXTFILE:

CREATE EXTERNAL TABLE tweets (
  json_body string 
)
STORED AS TEXTFILE
LOCATION '/tmp/1' --this is HDFS/S3 location
;
...