まず、内側と外側のテーブル
修飾された内部外部のテーブル(管理テーブル)、テーブルを作成しない、修飾された外部の外部テーブル(表外部)。
内部テーブル(MANAGED_TABLE):ディレクトリテーブルは、仕様ハイブ、ハイブ倉庫配置ディレクトリ/ユーザ/ハイブ/倉庫内を展開します
外部テーブル(EXTERNAL_TABLE):自分自身を構築するために、ユーザによって指定された表表の一覧
外部表t_access(IP文字列、URL文字列、access_time文字列)を作成
行フォーマット区切り
によって終了フィールド「」
場所「/アクセス/ログインします」;
特性表テーブルの外部と内部の違い:
図1に示すように、ユーザによって指定されたVSテーブルディレクトリハイブ外部リポジトリディレクトリの内部テーブルのディレクトリ
2、内部テーブルをドロップ:ハイブは、関連するメタデータを消去し、データディレクトリとテーブルを削除します
図3に示すように、外部のテーブルをドロップ:ハイブは、関連するメタデータがクリアされ、HDFS上のデータは削除されません。
(MSCKリペアテーブルtable_nameを;)4、内部テーブルは、外側テーブル構造とパーティションテーブルが変更されている間、直接メタデータを同期させるために変更される修正するために、必要に修復します
ハイブデータ・ウェアハウス、テーブルの底部は、外部システムの論理の動作に影響を与えないようにするために、外部システムからのものでなければならない、これらの外部システムによって生成されたデータをマップするハイブ外部ディレクトリテーブルに内蔵することができます。
次に、各種テーブルが生成され、その後の操作ETLは、managed_table提案しました
第二に、パーティションテーブル
テーブルt_pv_log(IPの作成文字列、URL 文字列、access_time 文字列) (日によって仕切られた文字列) 行形式区切り で終わるフィールドを「」
パーティションテーブルの本質:クエリMRプログラムが読み込まれたデータの範囲を減らすために、データパーティションのサブディレクトリのために処理することができるようにする場合、データファイルのサブディレクトリとしてテーブルディレクトリパーティションを作成します。例えば、統計毎日PV、あなただけの日付データを読み取ることができます。次に、パーティションテーブルのために構築されたテーブルは、日々のログデータが格納されています。
注、パーティションテーブルとフィールドは、紛争の分野で定義することはできません
例えば、毎日、生産履歴のウェブサイトを閲覧し、閲覧履歴がテーブルを格納するために構築する必要があります、しかし、時には、私たちは一日だけの歴史を分析する必要があるかもしれません
この場合、テーブルは、パーティションテーブルのために構築することができ、パーティションは、その中に毎日のデータを導入します。
もちろん、日々のディレクトリパーティションは、ディレクトリ名があるはずです(パーティションフィールド)
例パーティションフィールドの2-1:
例としては、次のとおりです:
1、パーティションを持つ表を作成
テーブルt_access(IPの作成文字列、URLの文字列、access_time 文字列) (DTで仕切られた文字列) 行形式区切り で終わるフィールドを「」 ;
注意:フィールドパーティションテーブルは、既存のフィールドで定義することはできません
パーティションに2、データをインポート
荷重データのローカルINPATH '/root/access.log.2017-08-04.log' テーブルt_accessパーティション(DT = '20170804')へ。
荷重データのローカルINPATH '/root/access.log.2017-08-05.log' テーブルt_accessパーティション(DT = '20170805')へ。
これはサービスハイブの観点からマシンのローカル操作のためであることに注意してください。
区分データに対して3、クエリ
PV 8月4日の、統計総数:
SELECT COUNT(*)t_accessどこDT = '20170804' から。
エッセンス:パーティションフィールドは、テーブルのフィールドとして使用することを、あなたはパーティションを指定するには、WHERE句を使用することができます
B、全てのデータテーブル合計PV:
SELECT COUNT(*)t_accessから。
エッセンス:あなたはパーティション条件を指定することはできません
パーティションフィールド例2-2複数の
1、構築されたテーブル:
テーブルt_partition(作成のid int型、名前の文字列、年齢int型) (部門によって仕切られた文字列、セックスの文字列、howoldのint型) によって終了行形式区切られたフィールドを「」 ;
図2に示すように、ガイドデータ:
負荷データテーブルt_partitionパーティションに '/root/p1.dat' ローカルINPATH(部門= 'xiangsheng'、性別= '男性'、howold = 20)。