配置单元将json记录解析为空 [英] hive parsing json records as NULL

查看:25
本文介绍了配置单元将json记录解析为空的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个简单的蜂窝表:

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"}

从推文中选择返回空

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

我知道要么是文件格式错误,要么是发生了其他事情。有人能帮帮忙吗?

推荐答案

如果希望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
;

这篇关于配置单元将json记录解析为空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆