0

次のような 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' />"
    }
}

私の最初のクエリは、drill: の hello world でSELECT * FROM DataFile.json、列Key1, Key2,が返されましたKey3。それらには 1 つの行しかなく、エントリが含まれていました: "<htmltag attr1='bravo' /><htmltag attr2='delta' /><htmltag attr3='charlie' />"[つまり、エントリのみKey1.htmltags]。

2 つの質問があります。

  1. 各キーに 3 つの異なる値のエントリがあったのに、1 行しか返されなかったのはなぜですか?
  2. KVGEN/FLATTEN 関数を使用して上記の「htmltags」内の文字列を取得した後、HTML タグをさらに掘り下げる (分析してデータを抽出する) 方法はありますか?
4

2 に答える 2

0

残念ながら、Drill はこの仕事に適したツールではないようです (Homebrew でこの記事を書いている時点では v1.1.0)。

  1. 複数の列があるのに行が 1 つしかないのは、システムにバグがあるようです。レポートを提出しました: https://issues.apache.org/jira/browse/DRILL-4102
  2. もう一度ドキュメントを精査しましたが、HTML または XML をネイティブに分析するツールはありません。このための文字列操作に依存することは、私が好きな作業ではありません

そこで、XML パーサーや DOM ツリー クローラーなどを使用し、bash 文字列関数を使用して対象のタグ文字列 awk/tee を抽出します。

于 2015-11-17T12:45:02.977 に答える