2つのテーブルを列ごとに配列に残す必要があります。ハイブ、配列内のアイテムごとに2つのテーブルを結合する
表1モデル:
- 構造ID - ストリング
- IPS - 文字列の配列
表2モデル:
- IP - ストリング
- ホスト - 文字列 (存在する場合)
第二のテーブルに対応するIPを有する第1表の配列からのすべてのIPに必要
ID、IPアドレス、ホスト名:
Iが望む結果がフォーマットであります一致させる。
私はどのように起動するかわかりませんが、アイデアやリファレンスは大歓迎です。
2つのテーブルを列ごとに配列に残す必要があります。ハイブ、配列内のアイテムごとに2つのテーブルを結合する
表1モデル:
表2モデル:
第二のテーブルに対応するIPを有する第1表の配列からのすべてのIPに必要
ID、IPアドレス、ホスト名:
Iが望む結果がフォーマットであります一致させる。
私はどのように起動するかわかりませんが、アイデアやリファレンスは大歓迎です。
2番目のテーブルでexplodeオプションを使用して、次のように結合を実行できます。
は、文字列名の配列とテーブル2持っている
表のtable_1 CREATE(id文字列は、IPSの配列)の名前でのtable_1を考えてみましょう。 CREATE TABLE table_2(IP文字列、ホスト名int);
次に、explode udfを使用してtable_1に側面図を作成できます。
select id、ip from table_1 LATERAL VIEW explode(ips)ep AS ip;
これは、配列の各値に対して1行を複数の行に分解します。詳細についてはLateral view documentationをお読みください。
最後の結合クエリは次のようになります。
SELECT t1.id,t1.ip, t2.hostname
FROM
(select id,ip from table_1 LATERAL VIEW explode(ips) ep AS ip) AS t1
LEFT JOIN table_2 AS t2
ON (t2.ip=t1.ip);
上記の解決策があなたの問題を解決しましたか? –
あなたの質問に人々が参加するには、いくつかのデータ例があるテーブルのモデルが必要です。 – DanteTheSmith
テーブル1:構造体ID - 文字列、ips - 文字列の配列。表2:ip-string、hostname-string結果は次のとおりです:id、ips、hostname(存在する場合) – user8753324
あなたの質問に少し編集を加えました。承認されれば、より簡潔で読みやすくなって以来、人々にあなたに答えを与えてくれることを願っています。 – DanteTheSmith