Sqoopの使用概要

2209 ワード

何かあったらいいね
概要
キーワードsqoop=sql to hadoop Sqoopはオープンソースのツールで、主にHadoop(Hive)と従来のデータベース(mysql、postgresql...)との間でデータの伝達を行い、1つの関係型データベース(例えば、MySQL、Oracle、Postgresなど)のデータをHadoopのHDFSに導くこともできるし、HDFSのデータを関係型データベースに導くこともできる.Sqoop 2の最新バージョンは1.99.7です.2と1は互換性がなく、フィーチャーが不完全で、本番導入に使用するつもりはありません.
Sqoop原理
インポートまたはエクスポートコマンドをmapreduceプログラムに翻訳して実装します.翻訳されたmapreduceでは主にinputformatとoutputformatをカスタマイズします.
インストール
ダウンロード、解凍、環境の構成
環境:Javaとhadoopのダウンロードアドレスを備えています.http://mirrors.hust.edu.cn/apache/sqoop/1.4.6/
ディレクトリ、構成の変更
mv sqoop-env-template.sh sqoop-env.sh 
 
vim sqoop-env.sh

export HADOOP_COMMON_HOME=hadoop  
export HADOOP_MAPRED_HOME=hadoop  
export HIVE_HOME=hive  
export ZOOKEEPER_HOME=zookeeper  
export ZOOCFGDIR=zookeeper  
export HBASE_HOME=hbase   

コピーJDBCドライバ
cp mysql-connector-java-5.1.27-bin.jar /opt/module/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/lib/ 

テスト
#        
bin/sqoop help
#          
bin/sqoop list-databases --connect jdbc:mysql:ip:   3306 --username     --password   

単純な使用
データのインポート
Sqoopにおいて「導入」概念とは、非ビッグデータクラスタ(RDBMS)からビッグデータクラスタ(HDFS,HIVE,HBASE)へデータを転送することを意味し、インポート、すなわちimportキーワードを用いた例をいう
$ bin/sqoop import \ 
--connect jdbc:mysql://  mysql   IP  :3306/company \ 
--username     \ --password ,  \ 
--target-dir /user/company \ --delete-target-dir \ 
--num-mappers 1 \ --fields-terminated-by "\t" \ 
--query 'select name,sex from staff where id <=1 and $CONDITIONS;' 


ヒント:must contain'$CONDITIONS'in WHERE clause.queryの後に二重引用符を使用する場合は、$CONDITIONSの前にシフト記号を付けてshellが自分の変数として認識されないようにしなければなりません.
データのエクスポート
Sqoopでは、「エクスポート」概念とは、ビッグデータクラスタ(HDFS,HIVE,HBASE)から非ビッグデータクラスタ(RDBMS)へデータを転送することを意味し、エクスポートとは、exportキーワードを使用することである.mysqlテーブルが存在しない場合は自動的に作成されません
$ bin/sqoop export \
--connect jdbc:mysql://  mysql   ip  :3306/company \ 
--username    \ 
--password   \
--table staff \ 
--num-mappers 1 \ 
--export-dir /user/hive/warehouse/staff_hive \ 
--input-fields-terminated-by "\t" 

スクリプトのパッケージング
作成します.optファイル、書き込みコマンドbin/sqoop--options-file optファイル
何かあったらいいね