配置单元将json记录解析为NULL
我有一个简单的蜂巢桌:配置单元将json记录解析为NULL,json,hive,hiveql,presto,Json,Hive,Hiveql,Presto,我有一个简单的蜂巢桌: 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.TextIn
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”:“appname”}
从tweets中选择返回NULL
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
;
还可以阅读关于
如果希望将整个JSON对象作为字符串JSON_体,则不需要JSON SerDe,而是使用TEXTFILE:
CREATE EXTERNAL TABLE tweets (
json_body string
)
STORED AS TEXTFILE
LOCATION '/tmp/1' --this is HDFS/S3 location
;