ハイブ研究第三章:DDLデータ定義

データベースを作成します。

  1. データベースを作成し、HDFS上のデータベースのデフォルトのパスは/user/hive/warehouse/*.dbです
  2. 決定するために存在しない場合は、既にエラー、増加が存在することをデータベースの作成を回避するために:db_hive存在しない場合には、データベースを作成します
  3. データベースを作成し、HDFSに保存されている場所のデータベースを指定:データベースdb_hive2の場所「/db_hive2.db」を作成

説明:HDFSにフォルダを作成します:HadoopのFS -mkdir -p /データベース/ hive3

クエリのデータベース

  1. データベースを表示します。showデータベース
  2. 「db_hive」のようなショーのデータベース:データベースクエリの表示をフィルタします
  3. 表示データベース情報:DESCデータベースdb_hive
  4. 表示データベースの詳細:DESCデータベースはdb_hive延長しました
  5. 現在のデータベースの切り替え:使用をdb_hive
  6. データベース修正:ALTERデータベースdb_hiveセットdbpropertiesを(「 CREATETIME」=「20170830」) 説明:他のメタデータ情報データベースは、データベース、ディレクトリデータベースの名前と位置が配置されているなど、変更されません
  7. ドロップデータベースdb_hive2:データベースを削除します。
  8. あなたが存在しないデータベースを削除すると、データベースの最適な使用が存在する場合があるかどうかを判断するには:ドロップデータベースをdb_hive2が存在する場合
  9. データベースが空でない場合は、強制削除にカスケードコマンドを使用することができますドロップデータベースdb_hiveカスケード

テーブルを作成します。

  • テーブルの構文を構築するには
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
[(col_name data_type [COMMENT col_comment], ...)]
[COMMENT table_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
[CLUSTERED BY (col_name, col_name, ...)]
[SORTED BY (col_name [ASC|DESC], ...)] INFO num_buckets BUCKETS]
[ROW FORMAT row_format]
[STORED AS file_format]
[LOCATION hdfs_path]

フィールドの説明

  1. CREATE TABLEは、指定された名前を持つテーブルを作成します
  2. テーブルの指定パス(LOCATION)の実際の建設は、ハイブがテーブル内に作成されたときに、パスにデータウェアハウス・ポイントにデータを移動しながら、EXTERNALキーワードは、ユーザーが外部表を作成することができます。あなたは、外部テーブル、唯一のレコードデータを作成した場合パスは、間違った位置データは、任意の変更を行います。あなたがテーブルを削除すると、外部表だけで削除されていないデータの操作を行い、メタデータを削除しながら、内部の白いああメタデータとデータは、放棄され削除されます
  3. テーブルやカラムにコメント追加注釈
  4. PARTITIONED BYは、パーティションテーブルを作成します
  5. CLUSTERED BYは、サブバケットテーブルを作成します
  6. 珍しいによって並べ替え
  7. 指定されたストレージの種類のファイルとして保存されます。データ圧縮が保存されているSEQUENCEFILEを使用するために必要とされる場合TEXTFILE(テキスト)、のrcfile(柱状保存形式)、SEQUENCEFILE(バイナリシーケンスファイル)、ファイルデータがプレーンテキストであれば、保存されているTEXTFILEを使用することができます
  8. LOCATION:指定した場所テーブルは、HDFSに保存されています
  9. LIKEは、ユーザーが既存のテーブルの構造をコピーすることができますが、データをコピーしません
  • 管理テーブル
  1. 理論:テーブルは時々内部テーブルと呼ばれ、管理テーブルにデフォルトで作成され、ハイブは(多かれ少なかれ)になり、データのライフサイクルを制御します。データをデフォルトになりハイブは、設定項目hive.metastore.warehouse.dirによってこれらのテーブルに格納されている:管理テーブルを削除するときに定義されたディレクトリ(例えば、/ユーザ/ハイブ/倉庫)のサブディレクトリの下に、また、ハイブこれは、テーブル内のデータを削除します。経営陣は、共有データへのテーブルや他のツールには適していません
  2. テーブルを作成し、クエリの結果に基づいてテーブルを作成します
    //1.普通创建表
    create table if not exists student2(
    id int, name string
    )
    row format delimited fields terminated by '\t'
    stored as textfile
    location '/user/hive/warehouse/student2'
    
    //2.根据查询结果创建表(查询的结果会添加到新创建的表中)
    create table if not exists student3 as select id, name from student

     

  • 外部表
  1. 理論:このテーブルを削除し、このデータを削除しませんが、情報のメタデータ記述は削除されます
  2. 管理と外側のテーブルの使用シナリオ:収集し、毎日ウェブサイトのログを定期的に、HDFSファイルに流入外部表に基づいて統計的分析の多くを行うには、中間テーブルは、結果のテーブルにはSELECT +によってデータを格納するために内部テーブルを使用して、使用します内部テーブルへのINSERT
  • 管理テーブルと外側テーブル交換
  1. クエリテーブルの種類:DESCフォーマットさstudent2
  2. STUDENT2内部テーブル外側のテーブルを変更します。ALTERテーブルstudent2セットtblproperties(「外部」=「TRUE」)
  3. STUDENT2外部のテーブルが内部テーブルで変更:ALTERテーブルstudent2セットtblproperties(「外部」=「偽」)

パーティションテーブル

パーティションテーブルは、実際にはファイルシステムHDFSフォルダに別のファイル、フォルダ型仕切りすべてのデータファイルに対応しています。地区のハイブは、小さなデータセットにカタログ、ビジネスニーズの大規模なデータセットの基礎を分けています。クエリはクエリ式の句が必要な指定されたパーティションを選択したWHERE経由すると、このような問合せの効率は多くのことを改善します

  •  パーティションテーブルの基本的な操作
  1. パーティションテーブルの導入、ログの日付に応じて管理する必要があります
    /user/hive/warehouse/log_partition/20200401/20200401.log
    /user/hive/warehouse/log_partition/20200402/20200402.log
    /user/hive/warehouse/log_partition/20200403/20200403.log
    

     

  2. パーティションテーブルの構文を作成します。
    create table dept_partition(
    deptno int, dname string, loc string
    )
    partitioned by (month string)
    row format delimited fields terminated by '\t';

     

  3. パーティションテーブルにデータをロードします

    load data local inpath '/opt/module/datas/dept.txt' into table default.dept_partition partition(month='20200401')
    load data local inpath '/opt/module/datas/dept.txt' into table default.dept_partition partition(month='20200402')
    load data local inpath '/opt/module/datas/dept.txt' into table default.dept_partition partition(month='20200403')

     

  4. データクエリーパーティションテーブル

    //1.单分区查询
    select * from dept_partition where month='20200401'
    
    //2.多分区联合查询
    select * from dept_partition where month='20200401' union
    select * from dept_partition where month='20200402' union
    select * from dept_partition where month='20200403'

     

  5. 地区を追加

    //1.创建单个分区
    alter table dept_partition add partition(month='20200404')
    
    //2.同时创建多个分区
    alter table dept_partition add partition(month='20200404') partition(month='20200405') 

     

  6. 削除パーティション

    //1.删除单个分区
    alter table dept_partition drop partition(month='20200401')
    
    //2.同时删除多个分区
    alter table dept_partition drop partition(month='20200401'), partition(month='20200402')

     

  7. どのように多くのパーティションのパーティションテーブルを見ます

    show partitions dept_partition

     

  8. パーティションテーブルの構造を見ます

    desc formatted dept_partition

     

  • パーティションテーブルノート
  1. セカンダリ・パーティション表の作成
    create table dept_partition2(
    deptno int, dname string, loc string
    )
    partitioned by (month string, day string)
    row format delimited fields terminated by '\t';

     

  2. 通常のデータのロード
    //1.加载数据到二级分区表中
    load data local inpath 'opt/module/datas/dept.txt' into table default.dept_partition2 partition(mobth='202004', day='13');
    
    //2.查询分区数据
    select * from dept_partition2 where month='202004' and day='13';

     

  3. データは直接、パーティションテーブルと関連付けられたデータは、3通りの方法で生成されたように、ディレクトリパーティションにアップロードされています
    //1.上传数据后台修复
    a.上传数据
    dfs -mkdir -p /user/hive/warehouse/dept_partition2/month=202004/day=13;
    dfs -put /opt/module/datas/dept.txt /user/hive/warehouse/dept_partition2/month=202004/day=13;
    
    b.查询数据(查询不到刚上传的数据)
    select * from dept_partition2 where month='202004' and day='13'
    
    c.执行修复命令
    msck repair table dept_partition2;
    
    d.再次查询数据
    select * from dept_partition2 where month='202004' and day='13'
    
    
    //2.上传数据后添加分区
    a.上传数据
    dfs -mkdir -p /user/hive/warehouse/dept_partition2/month=202004/day=13;
    dfs -put /opt/module/datas/dept.txt /user/hive/warehouse/dept_partition2/month=202004/day=13;
    
    b.执行添加分区
    alter table dept_partition2 add partition(month='202004', day='13');
    
    c.查询数据
    select * from dept_partition2 where month='202004' and day='13';
    
    
    //3.创建文件后load数据到分区
    a.创建目录
    dfs -mkdir -p /user/hive/warehouse/dept_partition2/month=202004/day=13;
    
    b.上传数据
    load data local inpath '/opt/module/datas/dept.txt' into table dept_partition2 partition(month='202004', day='13');
    
    c.查询数据
    select * from dept_partition2 where month='202004' and day='13';

     

変更テーブル 

 

公開された111元の記事 ウォン称賛57 ビュー60000 +

おすすめ

転載: blog.csdn.net/qq_38358499/article/details/105357315