前回の記事では、データベース操作と非常によく似たHiveのDDL操作について説明しました。DDLがあるため、DMLが必要です。この記事では、主にHiveのDMLデータ操作について説明します。HiveのDML操作は、データのインポートとデータのエクスポートの2つの部分に分けることができます。一緒に見てみましょう。「繭を壊して蝶になる-ビッグデータ」のコラムに注目して、関連するコンテンツをもっと見てください〜
目次
1.4テーブルを作成するときに、場所を介してデータストレージパスを指定します
1.5 Importコマンドを使用して、データをHiveにインポートします
1つは、データのインポートです
1.1Loadコマンドを使用してデータをロードします
1.1.1構文
load data [local] inpath 'path_name' [overwrite] into table table_name [partition (partcol1=val1,…)];
その中で、ローカルとは、ローカルからハイブテーブルにデータをロードすることを意味します。ステートメントにローカルがない場合は、HDFSからハイブテーブルにデータをロードすることを意味します。path_nameは、データが保存されている場所の名前を表します。上書きとは、テーブル内の既存のデータを上書きすることを意味します。それ以外の場合は、追加することを意味します。table_nameは、ハイブテーブルの名前を表します。パーティションとは、指定されたパーティションにアップロードすることを意味します。
1.1.2例
1.テストデータセットを作成するために、それは以前に持っていたファイルに基づいています。セパレータは次のようになります。
2.Hiveテーブルを作成します
create table people(id string, name string, sex string) row format delimited fields terminated by ',';
3.ローカルファイルをハイブテーブルにロードします
load data local inpath '/root/files/p.txt' into table people;
4.hdfs上のファイルをハイブテーブルにロードします
load data inpath '/xzw/files/p.txt' into table people;
5.データをロードして、ハイブテーブルのデータを上書きします
load data inpath '/xzw/files/p.txt' overwrite into table people;
1.2挿入コマンドを使用してデータをロードします
1.2.1構文
insert [into|overwrite] table table_name values(...);
挿入とは、データを追加してテーブルまたはパーティションに挿入することを意味し、元のデータは削除されません。挿入上書きとは、テーブルまたはパーティション内の既存のデータを上書きすることを意味します。また、insertは一部のフィールドの挿入をサポートしていないことに注意してください。
1.2.2例
1.従業員のパーティションテーブルを作成し、日付でパーティション化します。
create table emp(id int, name string) partitioned by (rq string) row format delimited fields terminated by ',';
2.データを挿入します
insert into table emp partition(rq='202012') values(1,'xzw'),(2,'lzq');
3.挿入+選択してデータを挿入します
insert overwrite table emp partition(rq='202011') select id,name from emp where rq = '202012';
ここの誰かが、上書きが使用されたときにデータの重複が発生する理由を見つけますか?これは、パーティションテーブルを作成しているため、指定したパーティションのみがここで上書きされるためです。
4.マルチテーブルマルチパーティションインサートを挿入します
from emp
insert overwrite table emp partition(rq='202011')
select id, name where rq='202012'
insert overwrite table emp partition(rq='202010')
select id, name where rq='202012';
1.3ロードデータの作成と選択
create table emp_tmp as select * from emp;
1.4テーブルを作成するときに、場所を介してデータストレージパスを指定します
create external table e_people(id string, name string, sex string) row format delimited fields terminated by ',' location '/xzw/files';
1.5 Importコマンドを使用して、データをHiveにインポートします
Importコマンドは、exportコマンドを使用してエクスポートされたデータに適用でき、構文形式は次のとおりです。
import table table_name [partition(...)] from 'export_data_path';
2、データのエクスポート
2.1挿入コマンドを使用してデータをエクスポートします
insert overwrite local directory '/root/files/emp_data' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' select * from emp;
上記のコマンドからlocalを削除すると、HDFSにデータをエクスポートする操作になります。
2.2HDFSコマンドを使用してデータを取得する
HDFSで対応するデータのストレージパスを見つけ、HDFSのgetコマンドを使用して、必要なデータをローカルに取得します。
2.3hiveコマンドを使用してデータをエクスポートする
hive -e / -fを使用してデータをエクスポートします。詳細については、他のブログ「Hiveが-fを介してSQLファイルを呼び出し、パラメーターを転送する」を参照してください。
2.4エクスポートを使用してデータをエクスポートする
export table people to '/xzw/files/people';
2.5Sqoopステートメントを使用したエクスポート
Sqoopからデータをエクスポートする方法については後で説明するので、ここでは説明しません。
3つの明確なデータ
次のコマンドを使用して、ハイブテーブルのデータをクリアします。ここで、truncateコマンドは内部テーブルのデータのみをクリアでき、外部テーブルのデータはクリアできないことに注意してください。
truncate table table_name;
OK〜HiveのDMLデータ操作はここで終了します。その過程でどのような問題が発生しましたか?メッセージを残して、すべての問題が発生したかどうかを確認させてください〜