でXPATHを使用してXMLノードの名前を取得します:ハイブに次のように私は、XML文書を持っているハイブ
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
を、私が使用してXML文書内の各ノードのテキストを取得するためにxpath
を使用することができています次のコマンドを実行します。ただし
select xpath(xml_text,'//*[name()='note']//text()') from table_test;
、私は上記の例では、テキスト のXMLノード名を取得するために、ハイブに使用するXPATHコマンド把握することはできません、私はを返すことができるようにしたいです["to","from","heading","body"]
は、XMLファイル内のトークンのXMLノードを表します。 何か助けていただければ幸いです。
おかげでアレックス、カスタムUDFための任意の勧告を:ところで
、あなたはあなたにテキストクエリを書き換えることができますか? –
@DonGorgon [オリジナルのハイブxpath UDF](https://github.com/apache/hive/blob/master/ql/src/java/org/apache/hadoop/hive/ql/udf/xml/)を利用することができます。 GenericUDFXPath.java)、 'getNodeValue()'から 'getNodeName()'に83行目を変更します。おそらくノードが要素であることを確認するためにいくつかのテストを追加してください –
提案をありがとう。それは間違いなく機能します。 –