【问题标题】:How do I query HTML embedded inside a string inside a JSON file with Apache Drill?如何使用 Apache Drill 查询嵌入在 JSON 文件中的字符串中的 HTML?
【发布时间】:2015-11-15 13:22:49
【问题描述】:

我正在尝试在如下所示的 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:SELECT * FROM DataFile.json,并返回给我列 Key1Key2Key3。他们只有一行,其中包含以下条目: "&lt;htmltag attr1='bravo' /&gt;&lt;htmltag attr2='delta' /&gt;&lt;htmltag attr3='charlie' /&gt;" [只有条目Key1.htmltags]。

我有两个问题:

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

【问题讨论】:

  • 无法验证您发布的 json 或从 Drill 运行您的 hello world 查询中获得结果。请检查您在帖子中使用的 json。
  • @catpaws 这是原版的代表,抱歉我没有检查有效性。我会改正的。
  • @catpaws 已编辑,感谢您指出。

标签: html json apache-drill


【解决方案1】:

JSON 似乎格式不正确。 对象没有通过名称/值对明确标识。也不是一个清晰的数组。

一旦解决了,htmltags 的值将不得不使用诸如定位、子字符串、位置等字符串函数来处理(参见https://drill.apache.org/docs/string-manipulation/

最好将 htmltags 作为数组而不是字符串。

【讨论】:

【解决方案2】:

不幸的是,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。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多