我如何使用 Apache Drill 查询嵌入在 JSON 文件中的字符串中的 HTML?

How do I query HTML embedded inside a string inside a JSON file with Apache Drill?

我正在尝试(第一次)在一个 JSON 文件上使用 Apache Drill,如下所示:

{
    "Key1": {
      "htmltags": "<htmltag attr1='bravo' /><htmltag attr2='delta' /><htmltag attr3='charlie' />"
    },
    "Key2": {
      "htmltags": "<htmltag attr1='kilo' /><htmltag attr2='lima' /><htmltag attr3='mike' />"
    },
    "Key3": {
      "htmltags": "<htmltag attr1='november' /><htmltag attr2='foxtrot' /><htmltag attr3='sierra' />"
    }
}

我最初的查询是 hello world of drill:SELECT * FROM DataFile.json,并向我返回了 Key1Key2Key3 列。他们只有一行,其中包含条目: "<htmltag attr1='bravo' /><htmltag attr2='delta' /><htmltag attr3='charlie' />" [即, 只有条目 Key1.htmltags]。

我有两个问题:

  1. 当每个键有三个不同值的条目时,为什么只返回一行?
  2. 在使用 KVGEN/FLATTEN 函数获取上面 "htmltags" 中的字符串后,是否有办法进一步钻取(分析和提取数据)HTML 标签?

JSON 似乎格式不正确。 name/value 对没有清楚地标识这些对象。也不是一个清晰的数组。

一旦该问题得到解决,htmltags 的值将必须使用字符串函数处理,例如 locate、substr、position 等(参见 https://drill.apache.org/docs/string-manipulation/

最好将 html 标签作为数组而不是字符串。

不幸的是,Drill 似乎不是完成这项工作的正确工具(在撰写本文时为 Homebrew,v1.1.0)。

  1. 系统似乎有一个错误,这就是为什么尽管有多列但只有一行的原因。我已提交报告:https://issues.apache.org/jira/browse/DRILL-4102
  2. 我再次搜索了文档,没有工具可以本地分析 HTML 或 XML。这取决于字符串操作 not a task I relish.

因此,我将使用 XML 解析器、DOM 树爬虫等,并使用 bash 字符串函数提取目标标签字符串 awk/tee.