首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将json记录解析为NULL

将json记录解析为NULL
EN

Stack Overflow用户
提问于 2019-02-25 08:19:00
回答 1查看 501关注 0票数 1

我有一个简单的蜂巢桌:

代码语言:javascript
复制
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"}

从tweet中选择返回NULL

代码语言:javascript
复制
hive> select * From tweets;
OK
NULL
Time taken: 0.097 seconds, Fetched: 1 row(s)

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-25 08:55:13

如果您希望JsonSerDe解析属性,那么就创建如下表:

代码语言:javascript
复制
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:

代码语言:javascript
复制
CREATE EXTERNAL TABLE tweets (
  json_body string 
)
STORED AS TEXTFILE
LOCATION '/tmp/1' --this is HDFS/S3 location
;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54862036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档