hadoop—对大量json数据集的即席查询

qvtsj1bj  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(428)

我有一个以json格式存储在azure blob中的海量数据集。一些应用程序不断向其中添加新数据。blob被组织在分区中,如

/dataset={name}/date={YYYY-MM-DD}/one_or_more_json_files

数据块不遵循任何特定的模式。json字段名的大小写不一致。一些json行可能会被打断。
有没有人能建议一种不用预先定义模式就可以查询这些数据的好方法。我想做一些像

select * from my_huge_json_dataset where dataset='mydataset' and date>'2015-04-01'

不为表定义显式架构
我首先考虑的是hive,但事实证明serde需要定义schema来创建表。json\u tuple可能是一个答案,但它区分大小写,如果遇到格式错误的json行,就会崩溃。
我也在考虑ApacheDrill和pig,但没有他们的经验,希望得到一些指导。

46qrfjad

46qrfjad1#

您可以使用apache drill,只需配置指向数据集文件夹的新存储:

{
  "type": "file",
  "enabled": true,
  "connection": "file:///",
  "config": null,
  "workspaces": {
    "root": {
      "location": "/",
      "writable": false,
      "defaultInputFormat": null
    },
    "tmp": {
      "location": "/tmp",
      "writable": true,
      "defaultInputFormat": null
    }
  },
"formats": {
 "json": {
      "type": "json",
      "extensions": [
        "json"
      ]
    }
}

因此,例如,如果将存储插件定义为“dfs”,则可以从根目录进行查询,而无需使用ansi sql定义任何模式,就像:

SELECT * FROM dfs.dataset.date.`file.json`;

或者在同一查询中使用 dir0 .
我鼓励您访问他们的文档站点apachedrill文档,特别是查询json文件

相关问题