問題タブ [hiveql]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
group-by - キーでグループ化されていないハイブ式
HIVE でテーブルを作成します。次の列があります。
月ごとの平均(ランク)を取得したい。このコマンドを使用できます。できます。
ただし、日付情報も取得したい。私はこのコマンドを使用します:
それは不平を言う:Expression Not In Group By Key
java - 2つの関連するテーブルをクエリする(結合)
これはHiveの最初のテーブルです-これには、購入しているアイテムに関する情報が含まれています。
そしてこれは上の最初の表のデータです
これはHiveの2番目のテーブルです-これには、購入しているアイテムに関する情報も含まれています。
そしてこれは上の表のデータです-
問題を理解しやすくするために、データを1つのBUYER_ID(USER_ID)のみに減らしました。
問題文-
Table2
withを比較するTable1
必要があります。つまり、USER_ID
fromTable2
とBUYER_ID
from Table1
(両方とも同じものであるため)が一致するかどうかを確認する必要があります。次にPURCHASED_ITEM
、PRODUCT_ID(ITEM_IDと同じ)とTIMESTAMPS(CREATED_TIMEと同じ)の配列であるTable2でその特定のUSER_ID(BUYER_ID)と同じでITEM_ID
ありCREATED_TIME
、また、それら(meansと、 )が同じでないか、から比較した後に一部のPRODUCT_IDとTIMESTAMPSが欠落している可能性もあります。Table1
PURCHASED_ITEM
ITEM_ID
CREATED_TIME
Table2
Table1
これは、その特定のBUYER_ID(USER_ID)のとの数が表1のとの数と同じであり、内容が同じである必要があるPRODUCT_ID
ことTIMESTAMPS
を意味します。それらが同じでないか、エントリがから欠落している場合は、結果を出力する必要があります。この特定のandは、またはから欠落しており、から比較した後、同じではありません。Table2
ITEM_ID
CREATED_TIME
Table2
ITEM_ID
CREATED_TIME
Table2
PRODUCT_ID
TIMESTAMPS
Table1
たとえば、現在、これについてはTable1にとBUYER_ID 1015826235
が5 ITEM_ID
あり5 CREATED_TIME
ます。したがって、Table2には、1つの行に同じものがある場合はTable15 PRODUCT_ID
と5 TIMESTAMPS
まったく同じである必要があります。USER_ID(BUYER_ID)
それが同じでないか、エントリが欠落している場合は、これが欠落しているか、このデータが間違っていることを示す結果を印刷する必要があります。
それで、それをより明確にするために-
PURCHASED_ITEM
はStructの配列であり、Table2
2つのものPRODUCT_ID
とが含まれていますTIMESTAMPS
。
USER_ID
とBUYER_ID
が一致する場合、 PRODUCT_ID
inはinとTable2
一致する必要があり、 inはITEM_ID
inTable1
と一致する必要があります。TIMESTAMPS
Table2
CREATED_TIME
Table1
更新しました
HiveQL SQLクエリの質問:-
最初の質問のために書いたクエリ。クエリは正しいですか?
sql - HiveQL(Hadoop)を使用してHiveで2つのテーブルを結合する
重複の可能性:
テーブルを使用したSQLクエリJOIN
そしてこれは上の最初の表のデータです
これはHiveの2番目のテーブルです-これには、購入しているアイテムに関する情報も含まれています。
そしてこれは上の2番目の表のデータです(TestingTable2
)-
以下のシナリオが満たされるようにと比較TestingTable2
してください。TestingTable1
から比較した後、 TestingTable1に対応するANDと一致しないPRODUCT_ID
ANDTIMESTAMPS
を検索します。TestingTable2
ITEM_ID
CREATED_TIME
BUYER_ID(USER_ID)
TestingTable1
したがって、データを見るとTestingTable2
、this(last)ITEM_ID 210002448035
fromTestingTable1
はデータと一致しておらずTestingTable2
PRODUCT_ID- 200002448035
、同様にタイムスタンプと一致していません。そこで、HiveQLクエリを使用して以下の結果を表示したいと思います。
誰かがこれで私を助けることができますか?私はHiveQLを初めて使用するので、多くの問題があります。
更新しました:-
このクエリを作成しましたが、希望どおりに機能しません。
もう1つの更新
user1166147
コメントによると。私は彼の質問に従って私の質問を書きました。ハイブでは、私INNER JOIN
は単にによって書かれていると思いますJOIN
。
これは私の以下のクエリです。
そして、上記のクエリを実行した後、ゼロの結果が返されます。
1つの最終更新:-
残念ながら、テーブルに正確なデータがなかったため、結果が返されませんでした。はい、実際の上記のクエリを実行しています。
hadoop - ハイブの構造体の配列を爆発させる
これは以下のハイブテーブルです
そしてこれは上の表のデータです-
配列を分解した後、HiveQLから以下の出力を取得する方法はありますか?
更新しました
上記の形式で出力を取得するためにこのクエリを作成しましたが、希望どおりの結果が得られません。
誰かが私がしている間違ったことを助けてくれますか?任意の提案をいただければ幸いです。
performance - カスタムマッパーとリデューサー vs HiveQL
問題文:-
Table1
2 つのテーブルを比較する必要がTable2
あり、両方とも同じものを格納しています。したがって、比較をTable2
行う必要Table1
がTable1
あるメインテーブルと比較する必要があります。Table2
したがって、比較した後、何らかの矛盾があるレポートを作成する必要があります。これら 2 つのテーブルには、約 TB のデータが大量に含まれています。HiveQL
そのため、現在、比較を行ってデータを取り戻すように書いています。
だから私の質問は、この種の仕事をするために をPERFORMANCE
書くのと、何百万ものレコードでこれらの 2 つのテーブルを結合するので、私が書いた の面でどちらが優れているかということです。私の知る限り、内部的に (舞台裏で) 最適化されたカスタム map-reducer を生成し、実行のために送信して結果を取得します。CUSTOM MAPPER and REDUCER
HiveQL
HiveQL
sql - 昨日の日付のBUYER_IDごとにTOP 10の最新レコードを検索
これが下の表です
そして、これは上記の表の下のデータです-
表に上記のデータが表示されている場合、 UNIQUEとANDBUYER_ID
に対応するものは2 つしかありません。このクエリ (昨日の日付を意味する) を各.ITEM_ID
CREATED_TIME
BUYER_ID
したがって、このためには、昨日の日付のみにBUYER_ID
基づいて34512201
、各基準に 10 個の最新のレコードが必要です。BUYER_ID
CREATED_TIME
そして、それぞれBUYER_ID
が任意の日のデータを持つことができます。しかし、私は今日のデータの前日(常に昨日の日付を意味する)に特に興味がありますCREATED_TIME
昨日の日付TOP 10
ごとに最新のデータを検索します。BUYER_ID
以下は、それぞれに対応して取得する必要があるサンプル出力ですBUYER_ID
。
サンプル出力。
私はSQL のような構文を使用しHive
てサポートしています。Hive
そのため、SQL が Hive 環境でも機能することを確認する必要があります。
誰でもこれで私を助けることができますか?
アップデート:-
以下のクエリを使用しており、以下のクエリから最新のトップ 10 を取得する必要があり、日付チェックのために修飾子をもう 1 つ追加する必要があります。つまり、Hive はSQL 構文をサポートしていないため、ここでwhere clause for yesterday's date
は使用できません。この問題を解決するには、別の方法が必要です。TOP 10
TOP 10
もう1つの更新:-
を使用して、以下のクエリを書きましたRANK UserDefinedFunction
。
そして、これは Java の RANK UDF 関数です。
そして、上記のクエリは私が望んでいたようには機能しません。そのクエリでは、ある種のひねりを加える必要があります。
HiveQL で UDF を使用せずにこれを行う方法はありますか?
sql - HiveQL を使用した構造体の配列の分解
以下は表2のデータです
この以下のクエリを使用して上記のデータを展開できます。上記のデータに対しては正常に機能します-
そして、このような出力が得られますが、これは問題ありません-
しかし、場合によっては、以下の表のようなデータがあり、複数のタイムスタンプが同じ product_id に対してシャープ記号で追加されています。
そして、HiveQLクエリを使用して上記のデータに対してこのような出力が必要です-
これはどういうわけかこれを行うことは可能ですか?
? 何か提案をいただければ幸いです。
PS私は数日前にこの質問をしますが、その場合、データは異なり、現在はデータがまったく異なるため、同様の出力が必要です.
hadoop - 2 つの列の一致の上位 3 つを見つける
これは私のTable1の下のデータです
したがって、上記のシナリオを明確にする必要がある場合-上記の表に次のようなデータがあります-USERの場合1345653
、このPID330760137950
four times
がありますが、タイムスタンプが異なります。だから私はこのような出力が必要です-
私が必要とする出力:-
したがって、基本的BID
に とPID
が同じであるが異なる場合timestamps
、 TIME で降順でソートされた上位 3 つが必要です。
rank UDF
このために、Hive で (ユーザー定義関数)を作成しました。そして、私は以下のクエリを書きましたが、うまくいきません。誰でもこれについて私を助けることができますか?
したがって、上記のクエリでは、次のような出力が得られます
上記の最後の2行が欠落しているため、これは間違っていExpected Output
ます。誰でもこれで私を助けることができますか?
hadoop - ハイブで15分未満の日付の違い
以下は私のクエリです。最後の行で、日付の差が15分以内かどうかを確認しようとしています。しかし、私が以下のクエリを実行するときはいつでも。
私はいつも例外を受け取ります-
私のクエリに何か問題がありますか?または、Hiveでは、日付間の差を分単位で計算できませんか?任意の提案をいただければ幸いです。
hadoop - Hive QL - 各項目ごとの行数の制限
where句に複数のアイテムがリストされている場合、リスト内の各アイテムの結果をNに制限するにはどうすればよいですか?
元: