問題タブ [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 投票する
0 に答える
84 参照

mapreduce - ハイブを使用してタスクを解決する

だから私はテーブルに新しいレコードを挿入するタスクを持っています。

次に、すべての履歴レコードについて同じテーブルをクエリします。

そして、これらすべての履歴レコードを新しいレコードと比較し、一致したものを別のテーブルに保存します。現在、膨大な量のデータがあると、それが不均衡に吹き飛ばされるという問題があります。また、新しい計算ごとに時間がかかります。

時間枠の後に期限切れになり、時代遅れになる可能性があるため、履歴レコードをキャッシュできません。

比較タスクはかなり複雑なので、Java コードで記述します。これを行うためにマップ削減ジョブを書きたくありません。

ハイブを使用してタスクを実行する方法はありますか

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

hive - 2 つのテーブルの結合での列のマージ

Hive データベースに次のテーブルがあります。

そして、それらをマージして、次のようなテーブルを作成したいと思います。

基本的に私がやりたいことは次のとおりです。

  1. 列の結合id(その部分は簡単です)

  2. table1.tを結合table2.tして新しい列にするt

  3. 対応する が から来ている場合、およびそれが から来ている場合、Zに等しい変数を持ちますtable1.Xttable1.ttable2.Ytable2.t

  4. テーブルを順番に並べますid(tそれほど難しいことではありません)。

パート 2 と 3 の実行方法がわかりません。 で外部結合を試しました table1.id = table2.id and table1.t = table2.tが、2 つの列がマージされませんt

任意のポインタをいただければ幸いです。ありがとう!

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

hive - ハイブのマップ型変数

ハイブでマップ タイプを定義しようとして問題が発生しています。Hive Manualによると、確かにマップ タイプがありますが、残念ながら、それを使用する方法の例はありません。:-(

次の列を持つテーブル(ユーザー)があるとします。

この「CategoryName」列には、特定の値のセットがあります。ここで、CategoryName を CategoryID にマップするハッシュテーブルを作成したいと考えています。私はやってみました:

2 つの質問があります。

  1. 私がそうするset hivevar:${nameToID['A']}と、値が1として出力されると思いました。しかし、「$ {hivevar:nameToID ['A']}は未定義です」と表示されます

  2. みたいなことをどう言えばいいのかわかりませんが、select name, ph, ${nameToID[CategoryName]} from users

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

hive - hiveQL if ステートメントが 1 行で再グループ化される

クエリ:

結果 :

そのような1行だけで結果を得る方法はありますか? :

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

hadoop - Hadoop Hive で「イベントの順序」クエリを実行する方法は?

過去 2 か月間 Hive について学習してきましたが、特定のシーケンス ベースのクエリを実行する方法を理解するのに苦労しています。次の例を見てください。

  • ユーザーアクションからなる巨大なログがあります
  • すべてのユーザー アクションには日付フィールドがありますが、異なるマシンからの複数のログ ファイルが原因で、明らかにその順序でスキャンされない場合があります。
  • 各ログは、さまざまな異なるイベントを記録できます。この例では、これらを文字で示します: A、B、C、D...

問題: 「平均して、B が発生する前にイベント A が発生する回数」を尋ねるクエリを作成するにはどうすればよいでしょうか?

ユーザーをグループ化して、A と B を実行したユーザーのみを取得し、発生した A の数を平均する方法は知っていますが、B の最初の発生で制限するのは難しいようです。見栄えの悪いクエリを 10 個ほど並べることで実際にこれを行うことができると思いますが、私が知らないより簡単な方法があるかどうかを知りたいと思っていました。

ありがとう!

0 投票する
0 に答える
945 参照

php - 複数のHiveクエリを並列に実行する

php、Hadoop / Hive(シングルノードHadoopクラスター-cloudera vm、8 CPU 4 GB RAM )、ThriftAPIを使用してWebベースの分析ツールを開発しています。Hive thrift APIは、実行に十分な時間がかかるHiveクエリを順番に実行します。これらのハイブクエリにマルチスレッドアプローチを使用して、並列で実行し、実行時間を節約できるようにしようとしています。

conf / mapred-site.xmlファイルのデフォルト値「mapred.tasktracker.map.tasks.maximum」を20に、「mapred.tasktracker.reduce.tasks.maximum」を20に変更しました。また、conf/hive-site.xmlで「 hive.exec.parallel」のデフォルト値をtrueに変更しました。

PHP "curl_multi_exec"を使用して4つのハイブクエリを並列に実行できますが、5つの並列ハイブクエリの実行時間は無限です。前述の変更を行った後でも、同じ結果が得られます。

4つのクエリを並行して実行できますが、5つは実行できません。

だから、ここで私が間違っていることは何ですか?4つの並列クエリでは完全に機能しているのに、5つの並列クエリでは機能していないのはなぜですか?構成ファイルに他の変更を加える必要がありますか?

ありがとう、

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

sql - 別のテーブルの 2 つの列で定義されている範囲 (ビン) 内の値のリストを検索し、3 番目の列から対応する値を取得します。

こんにちは、T1 と T2 の 2 つのテーブルがあります。T1 には整数値の列があります。T2 には、2 つの列で定義された範囲と、各範囲に対応する値があります...次のようなものです。

整数値がどの範囲に入るかに応じて、T1 の各整数に対して T2 から「値」を取得できるようにしたいとします。たとえば、T1 に 6、7、および 12 があるとします。次に、理想的な結果は次のようになります。

参加するものは何もないことに注意してください。SQLを使用してこれを行う方法がわかりませんでした。効果があるかどうかはわかりませんが、HiveQL を使用しています。

本当にありがとうございました。ありがとうございました!

乾杯

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

hive - 「SELECT DISTINCT」は、Hive のさまざまなケースを無視します

次のクエリからの出力が必要です。

O/P は次のようになります。

から'A''a'単一のエントリのみになる必要があります。

しかし、ハイブには次のものがあります。

SQLには次のようなものがあります:

次のようなものはありますか:'sql_latin1_general_cp1_cs_as'ハイブまたはそれに代わるクエリで?

0 投票する
4 に答える
651 参照

sql - HiveQL - ビッグデータの効率的な geoip 検出

このハイブ クエリを使用して、すべてのアカウントの国コードを検出しています。問題は、結合によってデータ セットが管理不能なサイズに爆発し、場合によってはジョブの完了に失敗することです。

この geoip ルックアップ クエリを実行するための高速で効率的な方法は何ですか? ハイブの使用は必須ではありません

BETWEENHive は内部ON節をサポートしていません。また、WHEREフィルタは結合が完了した後にのみ適用されます。どんなヒントも役に立ちます。現在、カスタム MapReduce ジョブを使用してこれを解決しようとしています。誰にもアイデアはありますか?

情報

  • geoipテーブルのサイズは約1MBです
  • Hadoop クラスタには 12 のマップ スロットと 12 のリデュース スロットしかありません
  • begin_ip_num最初のオクテット (例: 123of ) に基づいて geoip テーブルをバケット化し、句のような123.0.0.0条件を使用しようとしました。一部の行が除外されるため、この手法は機能しません。JOINFROM data JOIN geoip ON (data.first_octet_bucket=geoip.first_octet_bucket)
0 投票する
1 に答える
3398 参照

hadoop - Hive の複数の挿入が DISTINCT 選択ステートメントでうまくいかない

「 Hadoop the Definitive Guide」からこのコードを読みました。

しかし、私のテストでは、複数の DISTINCT を使用しても正しい結果が得られません。

以下のように私のhiveql:

次に、ローカルファイルをこのテーブルにロードします...

次に、テーブルを個別に挿入する場合:

結果は正しいです。

ただし、次の複数の挿入 hql を選択する場合:

それはバグですか、それとも間違った構文を書いたのでしょうか?