問題タブ [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)のみに減らしました。
問題文-
Table2withを比較するTable1必要があります。つまり、USER_IDfromTable2とBUYER_IDfrom Table1(両方とも同じものであるため)が一致するかどうかを確認する必要があります。次にPURCHASED_ITEM、PRODUCT_ID(ITEM_IDと同じ)とTIMESTAMPS(CREATED_TIMEと同じ)の配列であるTable2でその特定のUSER_ID(BUYER_ID)と同じでITEM_IDありCREATED_TIME、また、それら(meansと、 )が同じでないか、から比較した後に一部のPRODUCT_IDとTIMESTAMPSが欠落している可能性もあります。Table1PURCHASED_ITEMITEM_IDCREATED_TIMETable2Table1
これは、その特定のBUYER_ID(USER_ID)のとの数が表1のとの数と同じであり、内容が同じである必要があるPRODUCT_IDことTIMESTAMPSを意味します。それらが同じでないか、エントリがから欠落している場合は、結果を出力する必要があります。この特定のandは、またはから欠落しており、から比較した後、同じではありません。Table2ITEM_IDCREATED_TIMETable2ITEM_IDCREATED_TIMETable2PRODUCT_IDTIMESTAMPSTable1
たとえば、現在、これについてはTable1にとBUYER_ID 1015826235が5 ITEM_IDあり5 CREATED_TIMEます。したがって、Table2には、1つの行に同じものがある場合はTable15 PRODUCT_IDと5 TIMESTAMPSまったく同じである必要があります。USER_ID(BUYER_ID)それが同じでないか、エントリが欠落している場合は、これが欠落しているか、このデータが間違っていることを示す結果を印刷する必要があります。
それで、それをより明確にするために-
PURCHASED_ITEMはStructの配列であり、Table22つのものPRODUCT_IDとが含まれていますTIMESTAMPS。
USER_IDとBUYER_IDが一致する場合、 PRODUCT_IDinはinとTable2一致する必要があり、 inはITEM_IDinTable1と一致する必要があります。TIMESTAMPSTable2CREATED_TIMETable1
更新しました
HiveQL SQLクエリの質問:-
最初の質問のために書いたクエリ。クエリは正しいですか?
sql - HiveQL(Hadoop)を使用してHiveで2つのテーブルを結合する
重複の可能性:
テーブルを使用したSQLクエリJOIN
そしてこれは上の最初の表のデータです
これはHiveの2番目のテーブルです-これには、購入しているアイテムに関する情報も含まれています。
そしてこれは上の2番目の表のデータです(TestingTable2)-
以下のシナリオが満たされるようにと比較TestingTable2してください。TestingTable1
から比較した後、 TestingTable1に対応するANDと一致しないPRODUCT_IDANDTIMESTAMPSを検索します。TestingTable2ITEM_IDCREATED_TIMEBUYER_ID(USER_ID)TestingTable1
したがって、データを見るとTestingTable2、this(last)ITEM_ID 210002448035fromTestingTable1はデータと一致しておらずTestingTable2 PRODUCT_ID- 200002448035 、同様にタイムスタンプと一致していません。そこで、HiveQLクエリを使用して以下の結果を表示したいと思います。
誰かがこれで私を助けることができますか?私はHiveQLを初めて使用するので、多くの問題があります。
更新しました:-
このクエリを作成しましたが、希望どおりに機能しません。
もう1つの更新
user1166147コメントによると。私は彼の質問に従って私の質問を書きました。ハイブでは、私INNER JOINは単にによって書かれていると思いますJOIN。
これは私の以下のクエリです。
そして、上記のクエリを実行した後、ゼロの結果が返されます。
1つの最終更新:-
残念ながら、テーブルに正確なデータがなかったため、結果が返されませんでした。はい、実際の上記のクエリを実行しています。
hadoop - ハイブの構造体の配列を爆発させる
これは以下のハイブテーブルです
そしてこれは上の表のデータです-
配列を分解した後、HiveQLから以下の出力を取得する方法はありますか?
更新しました
上記の形式で出力を取得するためにこのクエリを作成しましたが、希望どおりの結果が得られません。
誰かが私がしている間違ったことを助けてくれますか?任意の提案をいただければ幸いです。
performance - カスタムマッパーとリデューサー vs HiveQL
問題文:-
Table12 つのテーブルを比較する必要がTable2あり、両方とも同じものを格納しています。したがって、比較をTable2行う必要Table1がTable1あるメインテーブルと比較する必要があります。Table2したがって、比較した後、何らかの矛盾があるレポートを作成する必要があります。これら 2 つのテーブルには、約 TB のデータが大量に含まれています。HiveQLそのため、現在、比較を行ってデータを取り戻すように書いています。
だから私の質問は、この種の仕事をするために をPERFORMANCE書くのと、何百万ものレコードでこれらの 2 つのテーブルを結合するので、私が書いた の面でどちらが優れているかということです。私の知る限り、内部的に (舞台裏で) 最適化されたカスタム map-reducer を生成し、実行のために送信して結果を取得します。CUSTOM MAPPER and REDUCERHiveQLHiveQL
sql - 昨日の日付のBUYER_IDごとにTOP 10の最新レコードを検索
これが下の表です
そして、これは上記の表の下のデータです-
表に上記のデータが表示されている場合、 UNIQUEとANDBUYER_IDに対応するものは2 つしかありません。このクエリ (昨日の日付を意味する) を各.ITEM_IDCREATED_TIMEBUYER_ID
したがって、このためには、昨日の日付のみにBUYER_ID基づいて34512201、各基準に 10 個の最新のレコードが必要です。BUYER_IDCREATED_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 10TOP 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に制限するにはどうすればよいですか?
元: