2

out_url次のような生の URL エンコーディングを持つフィールドを持つハイブ テーブルに対してクエリを実行しています。

http%3A%2F%2Fwww.example.com%2Findex.php%3Fpage%3D260%26id%3D22

ドメインのみを抽出したいのですが、URL が未加工でエンコードされていない場合は、「parse_url(out_url, 'HOST')」で可能です。

これを回避するために、次のような醜い二重正規表現の置換を行っています。

parse_url(regexp_replace(regexp_replace(out_url, '%3A', ':'), '%2F', '/'), 'HOST')

をとに変換し%3A、ドメインを抽出します。これを行うためにJava UDFを作成できることは理解していますが、現在Javaの作成がほとんど苦手なので、それは私にとって素晴らしい選択肢ではありません。:%2F/

アイデア?Python UDF を書くことは可能ですか?

4

1 に答える 1

11

ここでは、Javaリフレクションを使用する簡単な方法があるようです:http://mail-archives.apache.org/mod_mbox/hive-user/201109.mbox/%3C15C962F3417BF94ABEAB2314AF92A16A1FF9CE@SVR-PR-MB2.cb.careerbuilder.com% 3E

SELECT reflect("java.net.URLDecoder", "decode", field_name) FROM table;
于 2013-03-18T10:59:13.123 に答える