データ処理コンポーネント:Sqoopに基づいてデータのインポートとエクスポートを管理します

この記事のソースコード:GitHub || GitEE

1つは、Sqoopの概要です

Sqoopはオープンソースのビッグデータコンポーネントであり、主にHadoop(Hive、HBaseなど)と従来のデータベース(mysql、postgresql、oracleなど)の間でデータを転送するために使用されます。

データ処理コンポーネント:Sqoopに基づいてデータのインポートとエクスポートを管理します

通常、データ処理コンポーネントの基本機能:インポートとエクスポート。

Sqoopはビッグデータテクノロジーシステムのコンポーネントであるため、リレーショナルデータベースをHadoopストレージシステムにインポートすることをインポートと呼びます。その逆も同様です。

Sqoopは、インポートまたはエクスポートコマンドをmapreduceプログラムに変換するコマンドラインコンポーネントツールです。mapreduceの主な目的は、inputformatとoutputformatをカスタマイズすることです。

2、環境展開

Sqoopコンポーネントをテストする場合、少なくともHadoopシリーズ、リレーショナルデータ、JDKなどの基本的な環境が必要です。

Sqoopがツールコンポーネントであることを考えると、単一ノードのインストールで十分です。

1.インストールパッケージをアップロードします

インストールパッケージとバージョン:sqoop-1.4.6

[root@hop01 opt]# tar -zxf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
[root@hop01 opt]# mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop1.4.6

2.構成ファイルを変更します

ファイルの場所:sqoop1.4.6/conf

[root@hop01 conf]# pwd
/opt/sqoop1.4.6/conf
[root@hop01 conf]# mv sqoop-env-template.sh sqoop-env.sh

構成コンテンツ:hadoopシリーズの共通コンポーネントとスケジューリングコンポーネントzookeeperを含みます。

[root@hop01 conf]# vim sqoop-env.sh
# 配置内容
export HADOOP_COMMON_HOME=/opt/hadoop2.7
export HADOOP_MAPRED_HOME=/opt/hadoop2.7
export HIVE_HOME=/opt/hive1.2
export HBASE_HOME=/opt/hbase-1.3.1
export ZOOKEEPER_HOME=/opt/zookeeper3.4
export ZOOCFGDIR=/opt/zookeeper3.4

3.環境変数を構成します

[root@hop01 opt]# vim /etc/profile

export SQOOP_HOME=/opt/sqoop1.4.6
export PATH=$PATH:$SQOOP_HOME/bin

[root@hop01 opt]# source /etc/profile

4.MySQLドライバーを紹介します

[root@hop01 opt]# cp mysql-connector-java-5.1.27-bin.jar sqoop1.4.6/lib/

5.環境検査

データ処理コンポーネント:Sqoopに基づいてデータのインポートとエクスポートを管理します

キーポイント:インポートとエクスポート

ヘルプコマンドを表示し、バージョンごとにバージョン番号を表示します。Sqoopはコマンドライン操作に基づくツールであるため、ここでのコマンドは以下で使用されます。

6.関連する環境

この時点で、基本的にクラスターモードであるsqoopデプロイメントノードの関連環境を確認します。

データ処理コンポーネント:Sqoopに基づいてデータのインポートとエクスポートを管理します

7.MySQL接続をテストします

sqoop list-databases --connect jdbc:mysql://hop01:3306/ --username root --password 123456

図に示すように、MySQLデータベースを表示するコマンドは次のとおりです。結果は正しく出力されます。

データ処理コンポーネント:Sqoopに基づいてデータのインポートとエクスポートを管理します

3、データインポートの場合

1.MySQLデータスクリプト

CREATE TABLE `tb_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
  `user_name` varchar(100) DEFAULT NULL COMMENT '用户名',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表';
INSERT INTO `sq_import`.`tb_user`(`id`, `user_name`) VALUES (1, 'spring');
INSERT INTO `sq_import`.`tb_user`(`id`, `user_name`) VALUES (2, 'c++');
INSERT INTO `sq_import`.`tb_user`(`id`, `user_name`) VALUES (3, 'java');

データ処理コンポーネント:Sqoopに基づいてデータのインポートとエクスポートを管理します

2.Sqoopインポートスクリプト

データベースのテーブルを指定し、すべてのテーブルをHadoopシステムにインポートします。Hadoopサービスはここで開始する必要があることに注意してください。

sqoop import 
--connect jdbc:mysql://hop01:3306/sq_import \
--username root \
--password 123456 \ 
--table tb_user \
--target-dir /hopdir/user/tbuser0 \
-m 1

3.Hadoopクエリ

データ処理コンポーネント:Sqoopに基づいてデータのインポートとエクスポートを管理します

[root@hop01 ~]# hadoop fs -cat /hopdir/user/tbuser0/part-m-00000

4.列と条件を指定します

WHERE \ $ CONDITIONSは、クエリSQLステートメントに含める必要があります。

sqoop import 
--connect jdbc:mysql://hop01:3306/sq_import \
--username root \
--password 123456 \
--target-dir /hopdir/user/tbname0 \
--num-mappers 1 \
--query 'select user_name from tb_user where 1=1 and $CONDITIONS;'

エクスポート結果を表示します。

[root@hop01 ~]# hadoop fs -cat /hopdir/user/tbname0/part-m-00000

5.Hiveコンポーネントをインポートします

ハイブが使用するデータベースを指定しない場合、デフォルトのライブラリがデフォルトでインポートされ、テーブル名が自動的に作成されます。

sqoop import 
--connect jdbc:mysql://hop01:3306/sq_import \
--username root \
--password 123456 \
--table tb_user \
--hive-import \
-m 1

実行プロセス中、ここでsqoopの実行ログに注意してください。

ステップ1:MySQLデータをHDFSのデフォルトパスにインポートします。

手順2:一時ディレクトリのデータをハイブテーブルに移行します。

データ処理コンポーネント:Sqoopに基づいてデータのインポートとエクスポートを管理します

6.HBaseコンポーネントをインポートします

hbaseの現在のクラスターバージョンは1.3です。データのインポートを正常に実行する前に、テーブルを作成する必要があります。

sqoop import 
--connect jdbc:mysql://hop01:3306/sq_import \
--username root \
--password 123456 \
--table tb_user \
--columns "id,user_name" \
--column-family "info" \
--hbase-table tb_user \
--hbase-row-key id \
--split-by id

HBaseでテーブルデータを表示します。

データ処理コンポーネント:Sqoopに基づいてデータのインポートとエクスポートを管理します

4、データエクスポートの場合

新しいMySQLデータベースとテーブルを作成し、HDFSのデータをMySQLにエクスポートします。ここでは、最初のインポートスクリプトによって生成されたデータを使用できます。

データ処理コンポーネント:Sqoopに基づいてデータのインポートとエクスポートを管理します

sqoop export 
--connect jdbc:mysql://hop01:3306/sq_export \
--username root \
--password 123456 \
--table tb_user \
--num-mappers 1 \
--export-dir /hopdir/user/tbuser0/part-m-00000 \
--num-mappers 1 \
--input-fields-terminated-by ","

MySQLでデータを再度表示すると、レコードが完全にエクスポートされます。これ,が各データフィールド間の区切り文字であり、文法規則をスクリプト-HDFSデータクエリの結果と比較できます。

5、ソースコードアドレス

GitHub·地址
https://github.com/cicadasmile/big-data-parent
GitEE·地址
https://gitee.com/cicadasmile/big-data-parent

データ処理コンポーネント:Sqoopに基づいてデータのインポートとエクスポートを管理します

ラベルを読む

[ Java Foundation ] [デザインパターン] [構造とアルゴリズム] [ Linuxシステム] [データベース]

[分散アーキテクチャ] [マイクロサービス] [ビッグデータコンポーネント] [ SpringBoot Advanced ] [ Spring&Boot Foundation ]

[データ分析] [テクニカルマップ] [職場]

おすすめ

転載: blog.51cto.com/14439672/2659836