我有一个基于json文件构建的外部表。所有的json键都是列,按预期填充,只有一个键有空格。
以下是ddl: CREATE EXTERNAL TABLE foo.bar ( event ARRAY <STRUCT value:STRING ,info:STRUCT <id:STRING ,event_source:STRING>> ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES("mapping.event_source"="event source") STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 'foo/bar'
除event\ u source显示为null外,所有值都按预期显示。json文件中事件源的原始形式是没有单引号的“事件源”。我是否需要对with SERDEPROPERTYS设置执行一些不同的操作才能使密钥正常工作?
谢谢
2条答案
按热度按时间6qfn3psc1#
你的意思是json有如下数据
如果是这样的话,那就没什么可以做的了,因为它只是一个破json。如果没有,你能发布一个你想要阅读的json的示例吗?
ubby3x7f2#
我遇到了与上述类似的问题,但有一点变化,即输入数据是正确的json。
我有一个基于json文件构建的外部表。所有的json键都被填充,除了一个msrp\U货币,这里是ddl:
除msrp\u currency显示为null外,所有值都按预期显示。我需要引入下划线的原因是因为稍后我需要使用brickhouse提取与msrpcurrecny相同的字段值。
样本值: