問題タブ [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.
hbase - Hive-HBase 統合: テーブルが見つかりません
これは、Hive-HBase 統合について言及しています。
まず、 HBase に ORDERS_HIVE_DUMMY という名前のテーブルがないことを確認しました。
次に、ハイブシェルを開始しました:
次に、テーブルを作成しました
次に、テーブルが HBase に作成されていることを確認しました
しかし、Hive でテーブルをクエリすると、例外が発生します。
外部テーブルにクエリを実行するには、HIve プロンプトに記述されたクエリのヒントが必要だと思いますか? エラーは何ですか?
sql - UNION ALL を使用して Hive で多くのテーブルを結合しますか?
複数のテーブルから 1 つの変数を追加して (別名、行バインド、連結)、Hive で単一の列を持つ 1 つの長いテーブルを作成しようとしています。これは、この質問 ( HiveQL UNION ALLUNION ALL
) に基づいて使用できると思いますが、これを達成するための効率的な方法がわかりませんか?
擬似コードは次のようになります。
どんな助けでも大歓迎です!
mysql - HiveQL: 1 対多のテーブルで N 番目の値を見つける
私は単純なテーブルを持っています:
ユーザーは任意の数のイベントを持つことができます (なしからロットまで)。3 番目のイベントのタイムスタンプを (昇順で) 抽出するHiveQLクエリを実行する必要があります。イベントが 3 つ未満の場合は null になります。
UDF を使用してrank()をエミュレートする必要のないソリューションはありますか?
hive - ハイブは、2 つの大きなテーブルのユニオンに対して小さなテーブルを MapJoin しません
smallTable0
、smallTable1
、およびの3 つの小さなテーブルがありsmallTable3
ます。それらはすべて 100 行未満で、同一のスキーマを持っています。largeTable0
、largeTable1
、およびの3 つの大きなテーブルもありlargeTable3
ます。すべてが1Mを超える行を持ち、同一のスキーマを持ち、id
列を小さなテーブルと共有し、それ以外のものでパーティション化されていますid
(パーティション化が問題になる場合、そうではないと思います)。
を設定した後hive.auto.convert.join=true
、次の場合は予想どおり MapJoin になります。
- 参加
smallTable0
するsmallTable1
- 参加
smallTable0
するlargeTable0
- に参加
smallTable0
するsmallTable1 UNION ALL smallTable2
次の場合は、予想どおり MapJoin になりません。
largeTable0
何に対しても参加。smallTable0
何に対しても参加するhive.auto.convert.join=false
ただし、予想外に、次のケースでも MapJoin は発生しません。
- 参加
smallTable0
するlargeTable0 UNION ALL largeTable1
正確なクエリは次のとおりです。
正常に動作しますが、MapJoin ではなく Common Join を使用しているため、パフォーマンス ヒットが発生しています。を表すビューを作成してlargeTable0 UNION ALL largeTable1
も、問題は解決しません。問題を解決するテーブルを作成すると確信していますがlargetTable0 UNION ALL largeTable1
、大量のデータを複製して同期を維持することは望ましくありません。
Union 演算子のソース コード ( here ) には、やや不可解なコメントがあります。
UNION 演算子は明示的な MapJoin ヒントでは許可されていませんが、 UNION 演算子は の結果として開始された MapJoins では許可されているようですhive.auto.convert.join
。ただし、一方が許可され、もう一方が許可されない理由がわかりません。MapJoin ではなく、クエリが「機能する」ことを意味する場合を除きます。ただし、これが事実である場合、結合smallTable0
するsmallTable1 UNION ALL smallTable2
と Common Join になると予想していました。
奇妙な動作は、Hive のバグ、コードのバグ、Hive の機能の欠落、または私の側の誤解の結果ですか?
hadoop - マップ側の集約で使用されるハッシュ マップによるメモリ不足
私のハイブクエリはこの例外をスローしています。
8 Gb のデータで 1 つの大きなマスター インスタンスを使用して、8 つの EMR コア インスタンスでこれを試しました。最初に外部テーブルで試しました(データの場所はs3のパスです)。その後、S3 から EMR にデータをダウンロードし、ネイティブのハイブ テーブルを使用しました。しかし、両方で同じエラーが発生しました。
hive - 構造体の列を構造体メンバーごとに1つの列を持つテーブルに分解するためのより良いHiveQL構文?
HiveQL で argmax() タイプの関数を探していたところ、バグ トラッカー ( https://issues.apache.org/jira/browse/HIVE-1128 ) でほとんど文書化されていない機能が見つかりました。最初の要素に基づいて最大値を見つけ、構造体全体を返します。(実際には、max() は後続の要素を参照することで関係を解消するのでしょうか? 私にはわかりません。)
とにかく、ある列の最大値を含む行全体を本質的に選択したい場合は、最初に比較値を使用して行を構造体にパックし、次に最大構造体を抽出して最適な行を再構築できます。しかし、構文は反復的で醜いです。それを行うより良い方法はありますか?(自己結合も別のオプションだと思いますが、エレガントではないようで、効率が悪いと思いますか?)
表の例:
ハイブQL:
結果: