ハイブの操作の大規模なデータラインの学習モードを共有するのが良いプログラマ

  ハイブの動作モード、ハイブ性学習大きなデータ線を共有するための良いプログラマ:1は、端CLIに設けられている(現在のセッションに対してのみ)3コンフィギュレーションファイルに設定され、提供される(現在の接続)は、Javaコード2、(アクティブなすべてのセッション)

優先度の高い順のプロパティを設定します。CLIの最終特性は唯一の非ハイブニーズを開始するように設定することができます。(ログの属性、メタデータ接続のプロパティ)

すべてのプロパティを検索:ハイブ>設定、プロパティの現在の値を表示:通常のHadoopハイブ> -v設定を、あいまい検索属性:ハイブ-S -e「セット」| grepの電流、ハイブ-S -e「セット」| grepのインデックスを;

ハイブ変数:システム、ENV、hivevar、hiveconf

システム:システム・レベルの環境変数(JVM、Hadoopの、等)、読み取りおよびハイブ>設定システム書き込み:min.limit = 3;ハイブ>設定システム:min.limit;システム:min.limit = 3

ENV:環境変数(HADOOP_HOME)、読み取り専用に書き込むことはできません。ハイブ>設定ENV:PWD; ENV:PWD =は/ usr / local /ハイブ-1.2.1

hivevar:カスタム一時変数(読み取りおよび書き込み)

ハイブ>設定hivevar:min.limit = 3;
ハイブは> hivevar設定:min.limit。
hivevar:min.limit = 3
ハイブ>設定hivevar:min.limit = 2。
ハイブは> hivevar設定:min.limit。
hivevar:min.limit = 2

hiveconf:カスタム一時変数の属性(読み取りおよび書き込み)

ハイブ> hiveconf設定:max.limit = 10;
ハイブ> hiveconf設定:max.limit。
hiveconf:max.limit = 10
ハイブ>設定hiveconf:max.limit = 6。
ハイブ> hiveconf設定:max.limit。
hiveconf:max.limit = 6

操作のハイブモード:1、CLIエンドラン(暫定統計、開発)2、ハイブ-S -e "HQL文の";(単一の文に対するHQLクエリ)3、ハイブ-S -f / HQLファイル;(HQLファイルスクリプト)

引数はありません

ハイブ-S -e「使用qf1603、USER1から*を選択します。」ハイブ-S -f /home/su.hql。

以前のバージョン0.9でのハイブは、-f引数の実装によってサポートされていません。

ハイブ--hivevar min_limit = 3 -hivevar -hivevar T_N = USER1 -e '使用qf1603; {ハイブ:T_N} SELECT * FROM限界{hivevar:min_limit};'

ハイブ--hiveconf min_lit = 3 -e "利用qf1603、USER1制限$ {hiveconf:min_lit} SELECT * FROM;"

ハイブ-S --hiveconf T_N = USER1 --hivevar min_limit = 3 -f ./su.hql

Notesのハイブ: - Notesコンテンツ

上書きローカルディレクトリを挿入「/ホーム/アウト/ 05」
user1の上限3から選択します*;

構成属性の観点から### 3、最適化する最適化ハイブ1、2環境は、最適化(ハンドルのLinuxの数、アプリケーションのメモリ割り当て、ロードする場合など)。3、コードの最適化(HQL、書かれたHQLの異なるものを試してみてください)。

1、説明見て学びます

説明:ショープログラムHQLクエリを。ショープログラムHQLクエリ:拡張を説明します。また、抽象的な表現ツリーHQLを表示します。(通訳は何かをやっています)

選択説明USER1から。
選択の拡張を説明
USER1から。

HQL文は、一の以上のステージ構成を持つことになります。各ステージは、MRジョブの一つに対応する、ステージはフェッチ、マップジョイン、他の動作を制限してもよいです。各ステージは順序依存で実行され、依存関係が並列に実行することができません。

2、の制限の最適化:

hive.limit.row.max.size = 100000
hive.limit.optimize.limit.file = 10
hive.limit.optimize.enable =偽

3、参加の最適化:

常に小さなテーブル駆動大型テーブル(小結果が大きい結果セットを駆動するように設定される)必要な場合、小さなテーブルを使用/ + STREAMTABLE(小さなテーブルエイリアス)を識別/マップ側を利用することができるようにビジネスを調整参加:hive.auto.convert.join :smalltable:そこもあるフィルタリングするのか、どこ少し使用する必要がある場合でも、デカルト積は、クエリに参加しないようにしてください。ハイブは、今だけで同等の接続(=と)をサポートして参加します。他のありません

ハイブローカルモードを使用して4、(JVM内で実行)

hive.exec.mode.local.auto = falseを
hive.exec.mode.local.auto.inputbytes.max = 134217728
hive.exec.mode.local.auto.input.files.max = 4

5、ハイブ並列実行(全く相互依存ステージとの間に並列に行われなくてもよいです)

hive.exec.parallel = falseを
hive.exec.parallel.thread.number = 8

6、厳密モード:

条件を条件に、またはどこなし、1、パーティション2と、ルックアップテーブル、ORDERBY 3とクエリ、クエリに参加:ハイブバリア厳密モードは、クエリの3種類提供します。

7、マッパー、及び数を減らします

あまりにも多くのマッパー番号、時間のかかるを開始し、少なすぎるの数、十分に活用されていないリソースの減速のあまり数は、時間のかかるを開始し、数が少なすぎると、十分に活用されていないリソース

番号マッパー:手動設定:

セットmapred.map.tasks = 2。

ブロックサイズ適切それによってマッパーの数を変更するフラグメントの数を変更、調整します。

小さなファイルをマージすることにより、マッパーファイルの数を減らすには:

セットmapred.max.split.size = 25600000; 256M
= 1セットmapred.min.split.per.node
= 1セットmapred.min.split.per.rack
セットhive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat。

減速番号(通常は手動で設定)。

mapreduce.job.reduces = -1を設定します。

JVMの再利用を使用して8、ハイブ

mapreduce.job.jvm.numtasks = 1セットmapred.job.reuse.jvm.num = 8; ##走行のタスクのタスクのJVM数

9、データスキュー(参照:ハイブの最適化に.docxファイル)

傾きデータ:列値データの不均一な分布。データの傾きの原因:1、元のデータが2傾けられ、HQL文は、結合、3をもたらすことができる非常に簡単に、4につながるカウント(異なるCOL)5、ステートメントによってグループも容易です

溶液:1、データ自体が傾いている場合、直接別々にデータ(データは傾きを見つけるために)2、傾き算出データアウト見る単離することができ、その後、通常のデータ組合全て3、乱数所定の傾きデータ、クエリに参加する各タスクのための均等化の作業を行っています。図4は、一定の需要HQL文を書き換えしようとします。

チルトいくつかの属性設定を解決します:

hive.map.aggr =真
hive.groupby.skewindata = falseの
hive.optimize.skewjoin =偽  

10、コントロールのジョブ番号

同じできるだけ多くのフィールドに接続クエリの接続タイプ。HQLはおそらく別のジョブを生成しますによって制限、グループは、参加があり、簡単な文がジョブを生成する通常です。

選択
、u.uid
u.unameを
U USER1から
どこu.uidに(ログインLからl.uidを選択する場合l.uid = 1リミット1)

選択
、u.uid
u.unameを
U USER1から
ログインLに参加
u.uid = l.uidに
ここl.uid = 1

パーティション、バレルを分割し、インデックス自体は、最適化のこれらの種類のハイブです。

おすすめ

転載: blog.51cto.com/14479068/2427458