HIVE高度な機能

最近ハイブにいくつかの高度な機能を使用し、このレコードを見て

一つは:ハイブ何ですか

 ハイブは、大規模データのためのデータウェアハウスであるSQLツールをMapReduceのに変換されます。

2:ハイブ表

テーブル、外観、ゾーニング、バレルテーブル、位置は、圧縮されたテーブルである属性は、それぞれの間には何の関係は、(テーブル外観内に存在することができない)が存在しません。つまり、テーブルのテーブルだけでなく、パーティションテーブルバケットテーブルを指定することもでき、ストレージ・パスも圧縮することができるの両方であることができます

テーブルで

           実際には、テーブルには、ハイブディレクトリテーブルと関連付けられたデータにコピーされたデータは、テーブルを削除削除されます。

                    table_test存在しない場合は、テーブルを作成する
                    (
                             AA列
                    )
                    「\ 001」によって終了行形式区切られたフィールド
                    位置「/ハイブ/テーブル/ table_testを」;

       ステートメント上に内部テーブルを構築することで、行は、001 \フィールド間の分割に応じて、最終的な位置データは、IN /ハイブ/テーブル/ table_testレコード格納されています。

  データのロード:

    table_testに挿入

    table_aaからAAを選択します。

    若しくは

    INPATHデータロード「/ハイブ/日付/ table_test」内に上書き表table_test、(データを上書きする上書きし、除去することができます)

外部の

           表では、比較的安全ではないです:それは失われた後の表は、データを削除するので。だから、別にデータとテーブルの外観は(再び低下の出現後、何もデータロードに2つのコピーを変更しません)があります。

                    table_test存在しない場合は、外部表を作成します

                    (
                             AA文字列
                    ) 
                    「\ 001」によって終了行形式区切られたフィールド
                    位置「/ハイブ/テーブル/ table_test」。

       上記のステートメントは、建物の外観であり、行001 \フィールドとの間の分割に応じて、記録され、最終的な位置データは、IN /ハイブ/テーブル/ table_test格納されています。

  データのロード:

    INPATHデータロード  「/ハイブ/日付/ table_test」内に上書き  表table_test、(データを上書きする上書きし、除去することができます)

パーティションテーブル

           実際には、パーティションテーブルは、別のフォルダに、フィールド内のデータを入れたデータのスキャンを減らすことです。(パーティションテーブルは、フォルダ名は、フィールドの名前であるサブフォルダです)

                    table_test存在しない場合は、テーブルを作成する
                    (
                             AA文字列
                    (日付列、時間列)によって仕切ら)
                    「\ 001」によって終了行形式区切られたフィールド
                    位置「/ハイブ/テーブル/ table_testを」;

       ステートメント上の表を構築することであるが、それは、パーティションテーブル内である、行はレコードであり、\ 001、フィールド間の分割に応じて、最終的な位置データは、IN /ハイブ/テーブル/ table_test格納されています。

  データのロード:

    table_testパーティションに挿入(日付= 20190908、時間)

    AA、table_aaから時間を選択します。

    若しくは

    INPATHデータロード  「/ハイブ/日付/ table_test」上書きINTO  表table_testパーティション(DATE = 20190908、12 =時間である)、(データを上書きする上書きし、それを除去することができます)

バケットリスト

           バケットテーブルは、異なるファイルに入るデータのスキャンを減らすために、実際にフィールドのデータです。(ハッシュを取る日が、結果は4つの以上のファイルを取ると判断され、個人の理解ハハ)

                    table_test存在しない場合は、テーブルを作成する
                    (
                             AA列
                    4つのバケットに(日付)によってクラスタ化された)を

                    「\ 001」によって終了行形式区切られたフィールド
                    位置「/ハイブ/テーブル/ table_test」。

       ステートメント上の表を構築することであるが、それはタブテーブル内にある、行は、001 \フィールド間の分割に応じて、最終的な位置データは、IN /ハイブ/テーブル/ table_testレコード格納されています。

  データのロード:

    table_testに挿入

    AA、table_aaから日付を選択します。

    若しくは

    INPATHデータロード  INTO上書き「/ハイブ/ DATE / table_test」  表のtable_test ;(この操作は、サブファイルの結果ではない、それは浴槽テーブルの役割を果たしていませんでした)

表の圧縮

        これは、次のことが最良の選択である、伝送を減らすスペースを節約するために表圧縮の利点は言うまでもないです。

               table_test存在しない場合は、テーブルを作成する
               (
                           AA文字列
               (日付列、時間列)によって区画)を
               「\ 001」によって終了行形式区切りフィールド
    オークとして格納
               位置「/ハイブ/テーブル/ table_test」
               tblproperties(「orc.compress」=」てきぱき');

    //後のファイル保存形式として記憶することができ、今(TEXTFILE、SEQUENCEFILE、rcfileの、PARQUET)  

    //(= '' 'orc.compress')は圧縮(ZLIB、てきぱきと、NONE)オプションを続けることができた後は、サポートされています

  データのロード:

    table_testに挿入

    AA、table_aaから日付を選択します。

    若しくは

    INPATHデータロード  INTO上書き「/ハイブ/ DATE / table_test」  表のtable_test ;(この操作は、サブファイルの結果ではない、それは浴槽テーブルの役割を果たしていませんでした)

3:ハイブの高度な機能と特徴

1.json_tuple機能

               例子:表側面図json_tuple(jsonstr、 'A'、 'B'、 'C​​')AA、BB、CCとしてTMP1からAAを選択します。

    コスト:

                       jsonstr

                      {AA:1、BB:2、CC:3}

    結果の値:

                       AAのBBのCC  

                       1 2 3

    抽出されたAA、BB、CCの値でjsonstr JSON型解像度、係るテーブルは、生成されたカラムは、CC、BB、AAと呼ばれています。データは、ブランクを埋めるのデフォルト値になることはありません。汚れたJSONデータを処理するために非常に適しています。

2.explode機能

               例子:爆発選択(スプリット(REGEXP_REPLACE(REGEXP_REPLACE(jsonstr、 '\\ [\\ {'、 '')が、 '}]'、 '')、 '}、{\\'))テーブルからsale_infoとして。

    コスト:

                       jsonstr

                      [{AA:1、BB:2、CC:3}、{AA:4、BB:5、CC:6}、{AA:7、BB:8、CC:9}]

    結果の値:

                       jsonstr

                      AA:1、BB:2、CC:3

        AA:4、BB:5、CC:6

        AA:7、BB:8、CC:9

    [{と}]}配列に{データに応じて交換し、次に展開jsonstrテーブル

3.hive一般的なオペレーティングテーブル

               ALTER TABLE TABLE RENAME TO AA;    将表的名称改变

               ALTER TABLE TABLE ADD COLUMNS (BB STRING COMMENT);  //增加列

      修改速度很快(原因是修改了元数据)

      以后插入数据的时候会多需要一列的数据。

      查询历史数据的BB列为NULL值。

      真正看历史文件是没有BB列的。

               ALTER TABLE TABLE REPLACE COLUMNS (BB STRING COMMENT);  //删除列,基本理论和增加一致

               ALTER TABLE TABLE DROP PARTITION (STAT_YEAR_MONTH='20190908');删除分区

      TRUNCATE TABLE TABLE;清空表

おすすめ

転載: www.cnblogs.com/wuxiaolong4/p/11568290.html