データベースを作成します。
- データベースを作成し、HDFS上のデータベースのデフォルトのパスは/user/hive/warehouse/*.dbです
- 決定するために存在しない場合は、既にエラー、増加が存在することをデータベースの作成を回避するために:db_hive存在しない場合には、データベースを作成します
- データベースを作成し、HDFSに保存されている場所のデータベースを指定:データベースdb_hive2の場所「/db_hive2.db」を作成
説明:HDFSにフォルダを作成します:HadoopのFS -mkdir -p /データベース/ hive3
クエリのデータベース
- データベースを表示します。showデータベース
- 「db_hive」のようなショーのデータベース:データベースクエリの表示をフィルタします
- 表示データベース情報:DESCデータベースdb_hive
- 表示データベースの詳細:DESCデータベースはdb_hive延長しました
- 現在のデータベースの切り替え:使用をdb_hive
- データベース修正:ALTERデータベースdb_hiveセットdbpropertiesを(「 CREATETIME」=「20170830」) 説明:他のメタデータ情報データベースは、データベース、ディレクトリデータベースの名前と位置が配置されているなど、変更されません
- ドロップデータベースdb_hive2:データベースを削除します。
- あなたが存在しないデータベースを削除すると、データベースの最適な使用が存在する場合があるかどうかを判断するには:ドロップデータベースをdb_hive2が存在する場合
- データベースが空でない場合は、強制削除にカスケードコマンドを使用することができますドロップデータベース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]
フィールドの説明
- CREATE TABLEは、指定された名前を持つテーブルを作成します
- テーブルの指定パス(LOCATION)の実際の建設は、ハイブがテーブル内に作成されたときに、パスにデータウェアハウス・ポイントにデータを移動しながら、EXTERNALキーワードは、ユーザーが外部表を作成することができます。あなたは、外部テーブル、唯一のレコードデータを作成した場合パスは、間違った位置データは、任意の変更を行います。あなたがテーブルを削除すると、外部表だけで削除されていないデータの操作を行い、メタデータを削除しながら、内部の白いああメタデータとデータは、放棄され削除されます
- テーブルやカラムにコメント追加注釈
- PARTITIONED BYは、パーティションテーブルを作成します
- CLUSTERED BYは、サブバケットテーブルを作成します
- 珍しいによって並べ替え
- 指定されたストレージの種類のファイルとして保存されます。データ圧縮が保存されているSEQUENCEFILEを使用するために必要とされる場合TEXTFILE(テキスト)、のrcfile(柱状保存形式)、SEQUENCEFILE(バイナリシーケンスファイル)、ファイルデータがプレーンテキストであれば、保存されているTEXTFILEを使用することができます
- LOCATION:指定した場所テーブルは、HDFSに保存されています
- LIKEは、ユーザーが既存のテーブルの構造をコピーすることができますが、データをコピーしません
- 管理テーブル
- 理論:テーブルは時々内部テーブルと呼ばれ、管理テーブルにデフォルトで作成され、ハイブは(多かれ少なかれ)になり、データのライフサイクルを制御します。データをデフォルトになりハイブは、設定項目hive.metastore.warehouse.dirによってこれらのテーブルに格納されている:管理テーブルを削除するときに定義されたディレクトリ(例えば、/ユーザ/ハイブ/倉庫)のサブディレクトリの下に、また、ハイブこれは、テーブル内のデータを削除します。経営陣は、共有データへのテーブルや他のツールには適していません
- テーブルを作成し、クエリの結果に基づいてテーブルを作成します
//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
- 外部表
- 理論:このテーブルを削除し、このデータを削除しませんが、情報のメタデータ記述は削除されます
- 管理と外側のテーブルの使用シナリオ:収集し、毎日ウェブサイトのログを定期的に、HDFSファイルに流入外部表に基づいて統計的分析の多くを行うには、中間テーブルは、結果のテーブルにはSELECT +によってデータを格納するために内部テーブルを使用して、使用します内部テーブルへのINSERT
- 管理テーブルと外側テーブル交換
- クエリテーブルの種類:DESCフォーマットさstudent2
- STUDENT2内部テーブル外側のテーブルを変更します。ALTERテーブルstudent2セットtblproperties(「外部」=「TRUE」)
- STUDENT2外部のテーブルが内部テーブルで変更:ALTERテーブルstudent2セットtblproperties(「外部」=「偽」)
パーティションテーブル
パーティションテーブルは、実際にはファイルシステムHDFSフォルダに別のファイル、フォルダ型仕切りすべてのデータファイルに対応しています。地区のハイブは、小さなデータセットにカタログ、ビジネスニーズの大規模なデータセットの基礎を分けています。クエリはクエリ式の句が必要な指定されたパーティションを選択したWHERE経由すると、このような問合せの効率は多くのことを改善します
- パーティションテーブルの基本的な操作
- パーティションテーブルの導入、ログの日付に応じて管理する必要があります
/user/hive/warehouse/log_partition/20200401/20200401.log /user/hive/warehouse/log_partition/20200402/20200402.log /user/hive/warehouse/log_partition/20200403/20200403.log
- パーティションテーブルの構文を作成します。
create table dept_partition( deptno int, dname string, loc string ) partitioned by (month string) row format delimited fields terminated by '\t';
パーティションテーブルにデータをロードします
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')
データクエリーパーティションテーブル
//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'
地区を追加
//1.创建单个分区 alter table dept_partition add partition(month='20200404') //2.同时创建多个分区 alter table dept_partition add partition(month='20200404') partition(month='20200405')
削除パーティション
//1.删除单个分区 alter table dept_partition drop partition(month='20200401') //2.同时删除多个分区 alter table dept_partition drop partition(month='20200401'), partition(month='20200402')
どのように多くのパーティションのパーティションテーブルを見ます
show partitions dept_partition
パーティションテーブルの構造を見ます
desc formatted dept_partition
- パーティションテーブルノート
- セカンダリ・パーティション表の作成
create table dept_partition2( deptno int, dname string, loc string ) partitioned by (month string, day string) row format delimited fields terminated by '\t';
- 通常のデータのロード
//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通りの方法で生成されたように、ディレクトリパーティションにアップロードされています
//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';
変更テーブル