我如何使用 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
,并向我返回了 Key1
、Key2
、Key3
列。他们只有一行,其中包含条目:
"<htmltag attr1='bravo' /><htmltag attr2='delta' /><htmltag attr3='charlie' />"
[即, 只有条目 Key1.htmltags
]。
我有两个问题:
- 当每个键有三个不同值的条目时,为什么只返回一行?
- 在使用 KVGEN/FLATTEN 函数获取上面 "htmltags" 中的字符串后,是否有办法进一步钻取(分析和提取数据)HTML 标签?
JSON 似乎格式不正确。
name/value 对没有清楚地标识这些对象。也不是一个清晰的数组。
一旦该问题得到解决,htmltags 的值将必须使用字符串函数处理,例如 locate、substr、position 等(参见 https://drill.apache.org/docs/string-manipulation/)
最好将 html 标签作为数组而不是字符串。
不幸的是,Drill 似乎不是完成这项工作的正确工具(在撰写本文时为 Homebrew,v1.1.0)。
- 系统似乎有一个错误,这就是为什么尽管有多列但只有一行的原因。我已提交报告:https://issues.apache.org/jira/browse/DRILL-4102
- 我再次搜索了文档,没有工具可以本地分析 HTML 或 XML。这取决于字符串操作 not a task I relish.
因此,我将使用 XML 解析器、DOM 树爬虫等,并使用 bash 字符串函数提取目标标签字符串 awk/tee.
我正在尝试(第一次)在一个 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
,并向我返回了 Key1
、Key2
、Key3
列。他们只有一行,其中包含条目:
"<htmltag attr1='bravo' /><htmltag attr2='delta' /><htmltag attr3='charlie' />"
[即, 只有条目 Key1.htmltags
]。
我有两个问题:
- 当每个键有三个不同值的条目时,为什么只返回一行?
- 在使用 KVGEN/FLATTEN 函数获取上面 "htmltags" 中的字符串后,是否有办法进一步钻取(分析和提取数据)HTML 标签?
JSON 似乎格式不正确。 name/value 对没有清楚地标识这些对象。也不是一个清晰的数组。
一旦该问题得到解决,htmltags 的值将必须使用字符串函数处理,例如 locate、substr、position 等(参见 https://drill.apache.org/docs/string-manipulation/)
最好将 html 标签作为数组而不是字符串。
不幸的是,Drill 似乎不是完成这项工作的正确工具(在撰写本文时为 Homebrew,v1.1.0)。
- 系统似乎有一个错误,这就是为什么尽管有多列但只有一行的原因。我已提交报告:https://issues.apache.org/jira/browse/DRILL-4102
- 我再次搜索了文档,没有工具可以本地分析 HTML 或 XML。这取决于字符串操作 not a task I relish.
因此,我将使用 XML 解析器、DOM 树爬虫等,并使用 bash 字符串函数提取目标标签字符串 awk/tee.