Hive内表と外見の違い
2248 ワード
一、区別
1、テーブル構造の作成
①Hiveでテーブルを作成する:
②外部テーブル作成externalキーワード説明およびlocation'/home/wyp/external'
外部テーブルを作成するには、テーブルの作成時にexternalキーを付け、外部テーブルにデータを格納するパスを指定する必要があります(もちろん、外部テーブルの格納パスを指定しなくてもいいです.これにより、HiveはHDFS上の/user/hive/warehouse/フォルダの下に外部テーブルのテーブル名でフォルダを作成し、このテーブルに属するデータをここに格納します).
2.データのインポートとエクスポート
①データのインポート
内部テーブルはデータをインポートし、データは自分のデータウェアハウスディレクトリの下に移動し、hiveが自分で管理する.
load data local inpath '/home/wyp/data/wyp.txt' into table wyp;
外部テーブルインポートデータ:load data local inpath'/home/wyp/data/wyp.txt' into table exter_table;
外部テーブルにデータをインポートすると、データは自分のデータウェアハウスディレクトリの下に移動しません.つまり、外観のデータは自分で管理されていません.
②データ書き出し
内部テーブルのエクスポート:
データは、ローカルファイルシステムからHDFSにコピーする/home/hdfs/wypである.txtファイル内
外部テーブルのエクスポート:
データは、ローカルファイルシステムからHDFSにコピーする/home/hdfs/wypである.txtファイルでは、最後のデータは外部テーブルの/user/hive/warehouse/exter_に移動しません.テーブルを作成するときにデータの保存パスを指定しない限り、tableフォルダにあります.HDFSで見ると、外部テーブルの場合、データはテーブル作成時に指定されたディレクトリに移動されます(この例は/home/wyp/externalフォルダに格納されます).
3.テーブルの削除
①内部テーブルの削除
②外部テーブルの削除
テーブルを削除すると、Hiveはテーブルに属するメタデータとデータをすべて削除します.外部テーブルを削除する場合、Hiveは外部テーブルのメタデータだけを削除し、データは削除されません!
まとめ:
1、外部テーブルにデータをインポートしても、データは自分のデータウェアハウスディレクトリの下に移動していない.つまり、外部テーブルのデータは自分で管理するものではなく、テーブルは異なる.2、テーブルを削除するとき、Hiveはテーブルに属するメタデータとデータをすべて削除します.外部テーブルを削除する場合、Hiveは外部テーブルのメタデータだけを削除し、データは削除されません!では、どのテーブルを使うかどうすればいいのでしょうか.多くの場合、あまり違いがないので、選択は個人の好みの問題にすぎません.しかし、経験として、すべての処理をHiveで完了する必要がある場合は、外部テーブルを使用しないでテーブルを作成する必要があります.
1、テーブル構造の作成
①Hiveでテーブルを作成する:
hive> create table wyp(id int,
> name string,
> age int,
> tele string)
> ROW FORMAT DELIMITED
> FIELDS TERMINATED BY '\t'
> STORED AS TEXTFILE;
OK
Time taken: 0.759 seconds
②外部テーブル作成externalキーワード説明およびlocation'/home/wyp/external'
hive> create external table exter_table(
> id int,
> name string,
> age int,
> tel string)
> location '/home/wyp/external';
OK
Time taken: 0.098 seconds
外部テーブルを作成するには、テーブルの作成時にexternalキーを付け、外部テーブルにデータを格納するパスを指定する必要があります(もちろん、外部テーブルの格納パスを指定しなくてもいいです.これにより、HiveはHDFS上の/user/hive/warehouse/フォルダの下に外部テーブルのテーブル名でフォルダを作成し、このテーブルに属するデータをここに格納します).
2.データのインポートとエクスポート
①データのインポート
内部テーブルはデータをインポートし、データは自分のデータウェアハウスディレクトリの下に移動し、hiveが自分で管理する.
load data local inpath '/home/wyp/data/wyp.txt' into table wyp;
外部テーブルインポートデータ:load data local inpath'/home/wyp/data/wyp.txt' into table exter_table;
外部テーブルにデータをインポートすると、データは自分のデータウェアハウスディレクトリの下に移動しません.つまり、外観のデータは自分で管理されていません.
②データ書き出し
内部テーブルのエクスポート:
データは、ローカルファイルシステムからHDFSにコピーする/home/hdfs/wypである.txtファイル内
外部テーブルのエクスポート:
データは、ローカルファイルシステムからHDFSにコピーする/home/hdfs/wypである.txtファイルでは、最後のデータは外部テーブルの/user/hive/warehouse/exter_に移動しません.テーブルを作成するときにデータの保存パスを指定しない限り、tableフォルダにあります.HDFSで見ると、外部テーブルの場合、データはテーブル作成時に指定されたディレクトリに移動されます(この例は/home/wyp/externalフォルダに格納されます).
3.テーブルの削除
①内部テーブルの削除
hive> drop table wyp;
Moved: 'hdfs://mycluster/user/hive/warehouse/wyp' to
trash at: hdfs://mycluster/user/hdfs/.Trash/Current
OK
Time taken: 2.503 seconds
②外部テーブルの削除
hive> drop table exter_table;
OK
Time taken: 0.093 seconds
テーブルを削除すると、Hiveはテーブルに属するメタデータとデータをすべて削除します.外部テーブルを削除する場合、Hiveは外部テーブルのメタデータだけを削除し、データは削除されません!
まとめ:
1、外部テーブルにデータをインポートしても、データは自分のデータウェアハウスディレクトリの下に移動していない.つまり、外部テーブルのデータは自分で管理するものではなく、テーブルは異なる.2、テーブルを削除するとき、Hiveはテーブルに属するメタデータとデータをすべて削除します.外部テーブルを削除する場合、Hiveは外部テーブルのメタデータだけを削除し、データは削除されません!では、どのテーブルを使うかどうすればいいのでしょうか.多くの場合、あまり違いがないので、選択は個人の好みの問題にすぎません.しかし、経験として、すべての処理をHiveで完了する必要がある場合は、外部テーブルを使用しないでテーブルを作成する必要があります.