Hive 外部表读取 json 作为文本文件

问题描述

我正在尝试为 .txt 格式的 json 文件创建一个 hive 外部表。我尝试了几种方法,但我认为应该如何定义 hive 外部表是错误的:

我的示例 JSON 是:

[[
{
    "user": "ron","id": "17110","addr": "Some address"
},{
    "user": "harry","id": "42230","addr": "some other address"


}]]

如您所见,它是数组内的数组。这似乎是有效的 json,由 API 返回,尽管我读过一些帖子说 json 应该以 '{'

开头

无论如何,我正在尝试创建一个这样的外部表:

    CREATE EXTERNAL TABLE db1.user(
    array<array<
    user:string,id:string,desc:string
    >>)
  PARTITIONED  BY(date string)
  ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
  STORED AS TEXTFILE
  LOCATION '/tmp/data/addr'

这不起作用。类似的东西也不起作用

CREATE EXTERNAL TABLE db1.user(
    user string,id string,desc string

 )PARTITIONED  BY(date string)
  ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
  STORED AS TEXTFILE
  LOCATION '/tmp/data/addr'

在尝试修改 json 文本文件后,将 [ 替换为 { 等,添加分区后我仍然无法使用 select * 查询它。我缺少表结构中的一个关键部分。

你能帮我让表正确读取我的 JSON 吗?

如果需要,我可以修改输入 JSON,如果双 [[ 有问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)