問題タブ [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.
hadoop - Hive QL / UDF / Impala クエリのラッパー
Sqlのバックグラウンドを持つ人々が簡単に使用できるラッパーを作成しようとしています. 私はまだこの仕事を始めていないので、どのようなアプローチを取るべきか知りたい.
問題の説明は次のとおりです。rdbms データに多数のネイティブ Sql が記述されていて、hadoop に切り替えたい場合、多くの問題が発生します。hdfs でテーブルを構築する際の大きな問題は、Hive によって解消されました。次に、クエリの部分です。このために、さまざまなフレームワークがありますが、それ自体では完全ではありません。たとえば、1 つが遅く、他の機能が不足している可能性があります。たとえば、Impala や Hive QL がありますが、エンド ユーザー向けのフレームワークは 1 つではありません。私はこのようなことをするつもりです - select(列名のカンマ区切り文字列、tableName).where(filter-expression)....
hdfsのLinqのようなものとその下にあるものは、select(hive qlまたはImpala)を実行する最良の方法、where句などを実行する最良の方法を見つけ出します.
提案?アイデア?批評?
ありがとう
hadoop - ハイブ:さまざまなカテゴリの合計を取得できません
Hiveから、以下のような単純なテーブルから結果を取得しようとしています。
今、私は次のように表示したい、
Custername, Prjtid, (Total number of billable), (total number of non-billable).
例:
ABC, AB123, 40, 20
PQR, PQ123, 50, 20
請求可能または請求不可を取得することはできますが、一緒に取得することはできません。
誰かがこのシナリオを進める方法をアドバイスできますか?
よろしく、
ラージ
hadoop - Hive で構造体の配列を抽出する
ハイブに外部テーブルがあります
テーブルのレコードには、次のようなデータが含まれる場合があります。
このレコードからすべての productCategory を単純に抽出し、explode を使用せずに productCategories の配列として返す方法があるかどうかは誰にもわかりません。次のようなもの:
それとも、独自の GenericUDF を作成する必要がありますか? もしそうなら、私は Java (Ruby の人) をあまり知りません。誰かヒントを教えてもらえますか? Apache Hive から UDF に関する説明を読みました。しかし、どのコレクション型が配列を処理するのに最適で、どのコレクション型が構造体を処理するのに最適なのかわかりません。
===
GenericUDF を作成することでこの質問にある程度答えましたが、他に 2 つの問題が発生しました。それはこのSOの質問にあります
hadoop - Hive でデータを PIVOT する方法
HiveQL で PIVOT 機能を実現する方法。以下はSQLクエリです。Hiveでこれを達成するのを手伝ってください:
-- 必要な出力: 顧客製品 数量 KATE VEG 2 KATE SODA 6 KATE MILK 1 KATE BEER 12 FRED MILK 3 FRED BEER 24 KATE VEG 3
hadoop - HiveQL クエリ パフォーマンスの最適化
Hive クエリの JOINS の数が増えるにつれて、クエリは複数の段階で実行され、多くの実行時間がかかります。クエリのパフォーマンスを向上させる方法。設定するパラメータはありますか?
hadoop - Hive: 異なるキーで 2 つのテーブルを結合する
以下のような2つのテーブルがあります。基本的には両方に参加したいので、以下のような結果を期待しています。
テーブル 2 の最初の 3 行にはアクティビティ ID がなく、空です。
すべてのフィールドはタブで区切られています。カテゴリ「33」には、表 2 に従って 3 つの説明があります。
「33」カテゴリには 3 つの値があるため、「アクティビティ ID」を使用して結果を取得する必要があります。
誰かがこの出力を達成する方法を教えてもらえますか?
表1
Empid カテゴリ アクティビティ ID
44126 33トレイン
44127 10 UFL
44128 12 東井
44129 33 未割り当て
44130 15 マイクロソフト
44131 33 メリット
44132 43 メリット
表 2:
カテゴリ アクティビティ ID カテゴリの説明
10請求可能
12請求可能
15 請求不可
33 電車のトレーニング
33 割り当てられていないベンチ
33 特典 特典
43 メリット
期待される出力:
44126 33 トレーニング
44127 10 請求可能
44128 12 請求可能
44129 33 ベンチ
44130 15 請求不可
44131 33 メリット
44132 43 メリット
hadoop - ハイブでパーティションを動的に削除する
ハイブに 2 つのテーブルがあり、どちらもタイムスタンプを表す文字列でパーティション分割されています (タイムスタンプでパーティション分割されたテーブルをサポートしていない Cloudera Impala のテーブルを使用しているため、タイムスタンプの代わりに文字列を使用します)。
テーブルは、特定のタイム スライスに大量のデータを格納するために使用されます。最初のテーブルには、より高い時間粒度で最新のデータが含まれています。たとえば、1 分のタイム スライスであり、2 番目のテーブルには、より低い粒度で、たとえば 1 時間のタイム スライスです。
そのため、1 分のタイム スライスの特定の時間よりも古いデータを合計して、1 時間のタイム スライスのデータを取得し、それを 1 時間のタイム スライスでテーブルに挿入するクエリがあります。
1 時間のタイム スライスを作成した後、新しい 1 時間のタイム スライスに含まれる 1 分のタイム スライスをすべて削除したいと考えています。また、テーブルは時間を表す文字列で分割されているため、対応するパーティションを削除するだけです。
そして、私の実際の質問を知っています:
ハイブでどうにかしてパーティションをドロップすることは可能ですか
よろしくお願いします。
ps: なぜ私がこれを行っているのか疑問に思っている場合: データは継続的に成長しており、1 分のタイム スライスを削除しないと、それらを含むテーブルが非常に大きくなり、クエリが遅くなり、多くのクエリが必要になります。スペースの。
hive - HiveQL を使用した重複除去
フィールド 'a'(int)、'b'(string)、'c'(bigint)、'd'(bigint)、'e'(string) を持つハイブ テーブルがあります。
次のようなデータがあります。
テーブルはキー 'b' でソートされます。
ここで、以下のような出力が必要です。
キー「a」で重複排除されますが、最後(最新)の「b」は保持されます。
Hive クエリ (HiveQL) を使用することは可能ですか?