32、HiveのDMLデータ操作

前回の記事では、データベース操作と非常によく似たHiveのDDL操作について説明しました。DDLがあるため、DMLが必要です。この記事では、主にHiveのDMLデータ操作について説明します。HiveのDML操作は、データのインポートとデータのエクスポートの2つの部分に分けることができます。一緒に見てみましょう。「繭を壊して蝶になる-ビッグデータ」のコラムに注目して、関連するコンテンツをもっと見てください〜


目次

1つは、データのインポートです

1.1Loadコマンドを使用してデータをロードします

1.1.1構文

1.1.2例

1.2挿入コマンドを使用してデータをロードします

1.2.1構文

1.2.2例

1.3ロードデータの作成と選択

1.4テーブルを作成するときに、場所を介してデータストレージパスを指定します

1.5 Importコマンドを使用して、データをHiveにインポートします

2、データのエクスポート

2.1挿入コマンドを使用してデータをエクスポートします

2.2HDFSコマンドを使用してデータを取得する

2.3hiveコマンドを使用してデータをエクスポートする

2.4エクスポートを使用してデータをエクスポートする

2.5Sqoopステートメントを使用したエクスポート

3つの明確なデータ


 

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データ操作はここで終了します。その過程でどのような問題が発生しましたか?メッセージを残して、すべての問題が発生したかどうかを確認させてください〜

おすすめ

転載: blog.csdn.net/gdkyxy2013/article/details/111152504