問題タブ [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.

0 投票する
3 に答える
90318 参照

group-by - キーでグループ化されていないハイブ式

HIVE でテーブルを作成します。次の列があります。

月ごとの平均(ランク)を取得したい。このコマンドを使用できます。できます。

ただし、日付情報も取得したい。私はこのコマンドを使用します:

それは不平を言う:Expression Not In Group By Key

0 投票する
2 に答える
955 参照

java - 2つの関連するテーブルをクエリする(結合)

これはHiveの最初のテーブルです-これには、購入しているアイテムに関する情報が含まれています。

そしてこれは上の最初の表のデータです

これはHiveの2番目のテーブルです-これには、購入しているアイテムに関する情報も含まれています。

そしてこれは上の表のデータです-

問題を理解しやすくするために、データを1つのBUYER_ID(USER_ID)のみに減らしました。

問題文-

Table2withを比較するTable1必要があります。つまり、USER_IDfromTable2BUYER_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 10158262355 ITEM_IDあり5 CREATED_TIMEます。したがって、Table2には、1つの行に同じものがある場合はTable15 PRODUCT_ID5 TIMESTAMPSまったく同じである必要があります。USER_ID(BUYER_ID)それが同じでないか、エントリが欠落している場合は、これが欠落しているか、このデータが間違っていることを示す結果を印刷する必要があります。

それで、それをより明確にするために-

PURCHASED_ITEMはStructの配列であり、Table22つのものPRODUCT_IDとが含まれていますTIMESTAMPS

USER_IDBUYER_IDが一致する場合、 PRODUCT_IDinはinとTable2一致する必要があり、 inはITEM_IDinTable1と一致する必要があります。TIMESTAMPSTable2CREATED_TIMETable1

更新しました

HiveQL SQLクエリの質問:-

最初の質問のために書いたクエリ。クエリは正しいですか?

0 投票する
2 に答える
63733 参照

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つの最終更新:-

残念ながら、テーブルに正確なデータがなかったため、結果が返されませんでした。はい、実際の上記のクエリを実行しています。

0 投票する
3 に答える
105583 参照

hadoop - ハイブの構造体の配列を爆発させる

これは以下のハイブテーブルです

そしてこれは上の表のデータです-

配列を分解した後、HiveQLから以下の出力を取得する方法はありますか?

更新しました

上記の形式で出力を取得するためにこのクエリを作成しましたが、希望どおりの結果が得られません。

誰かが私がしている間違ったことを助けてくれますか?任意の提案をいただければ幸いです。

0 投票する
1 に答える
2418 参照

performance - カスタムマッパーとリデューサー vs HiveQL

問題文:-

Table12 つのテーブルを比較する必要がTable2あり、両方とも同じものを格納しています。したがって、比較をTable2行う必要Table1Table1あるメインテーブルと比較する必要があります。Table2したがって、比較した後、何らかの矛盾があるレポートを作成する必要があります。これら 2 つのテーブルには、約 TB のデータが大量に含まれています。HiveQLそのため、現在、比較を行ってデータを取り戻すように書いています。

だから私の質問は、この種の仕事をするために をPERFORMANCE書くのと、何百万ものレコードでこれらの 2 つのテーブルを結合するので、私が書いた の面でどちらが優れているかということです。私の知る限り、内部的に (舞台裏で) 最適化されたカスタム map-reducer を生成し、実行のために送信して結果を取得します。CUSTOM MAPPER and REDUCERHiveQLHiveQL

0 投票する
3 に答える
5782 参照

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 を使用せずにこれを行う方法はありますか?

0 投票する
1 に答える
6945 参照

sql - HiveQL を使用した構造体の配列の分解

以下は表2のデータです

この以下のクエリを使用して上記のデータを展開できます。上記のデータに対しては正常に機能します-

そして、このような出力が得られますが、これは問題ありません-

しかし、場合によっては、以下の表のようなデータがあり、複数のタイムスタンプが同じ product_id に対してシャープ記号で追加されています。

そして、HiveQLクエリを使用して上記のデータに対してこのような出力が必要です-

これはどういうわけかこれを行うことは可能ですか?

? 何か提案をいただければ幸いです。

PS私は数日前にこの質問をしますが、その場合、データは異なり、現在はデータがまったく異なるため、同様の出力が必要です.

0 投票する
1 に答える
540 参照

hadoop - 2 つの列の一致の上位 3 つを見つける

これは私のTable1の下のデータです

したがって、上記のシナリオを明確にする必要がある場合-上記の表に次のようなデータがあります-USERの場合1345653、このPID330760137950 four timesがありますが、タイムスタンプが異なります。だから私はこのような出力が必要です-

私が必要とする出力:-

したがって、基本的BIDに とPIDが同じであるが異なる場合timestamps、 TIME で降順でソートされた上位 3 つが必要です。

rank UDFこのために、Hive で (ユーザー定義関数)を作成しました。そして、私は以下のクエリを書きましたが、うまくいきません。誰でもこれについて私を助けることができますか?

したがって、上記のクエリでは、次のような出力が得られます

上記の最後の2行が欠落しているため、これは間違っていExpected Outputます。誰でもこれで私を助けることができますか?

0 投票する
1 に答える
2184 参照

hadoop - ハイブで15分未満の日付の違い

以下は私のクエリです。最後の行で、日付の差が15分以内かどうかを確認しようとしています。しかし、私が以下のクエリを実行するときはいつでも。

私はいつも例外を受け取ります-

私のクエリに何か問題がありますか?または、Hiveでは、日付間の差を分単位で計算できませんか?任意の提案をいただければ幸いです。

0 投票する
1 に答える
22746 参照

hadoop - Hive QL - 各項目ごとの行数の制限

where句に複数のアイテムがリストされている場合、リスト内の各アイテムの結果をNに制限するにはどうすればよいですか?

元: