ÀÖÓãµç¾º

½ÌÓýÐÐÒµA¹ÉIPOµÚÒ»¹É£¨¹ÉƱ´úÂë 003032£©

È«¹ú×Éѯ/ͶËßÈÈÏߣº400-618-4000

´óÊý¾ÝÀëÏß½×¶ÎÎÒÃÇÓ¦¸ÃѧϰµÄÊÇÄ£¿é¿ª·¢µÄ½á¹ûµ¼³ö

¸üÐÂʱ¼ä:2018Äê11ÔÂ16ÈÕ15ʱ40·Ö À´Ô´:ÀÖÓã²¥¿Í ä¯ÀÀ´ÎÊý:

Apache Sqoop
SqoopÊÇHadoopºÍ¹ØÏµÊý¾Ý¿â·þÎñÆ÷Ö®¼ä´«ËÍÊý¾ÝµÄÒ»ÖÖ¹¤¾ß¡£ËüÊÇÓÃÀ´´Ó¹ØÏµÊý¾Ý¿âÈ磺MySQL£¬Oracleµ½HadoopµÄHDFS£¬²¢´ÓHadoopµÄÎļþϵͳµ¼³öÊý¾Ýµ½¹ØÏµÊý¾Ý¿â¡£ÓÉApacheÈí¼þ»ù½ð»áÌṩ¡£
Sqoop£º“SQL µ½ Hadoop ºÍ Hadoop µ½SQL”¡£
 

Sqoop¹¤×÷»úÖÆÊǽ«µ¼Èë»òµ¼³öÃüÁî·­Òë³Émapreduce³ÌÐòÀ´ÊµÏÖ¡£
ÔÚ·­Òë³öµÄmapreduceÖÐÖ÷ÒªÊǶÔinputformatºÍoutputformat½øÐж¨ÖÆ¡£
sqoop°²×°
°²×°sqoopµÄǰÌáÊÇÒѾ­¾ß±¸javaºÍhadoopµÄ»·¾³¡£
ÐÂÎȶ¨°æ£º 1.4.6
ÅäÖÃÎļþÐ޸ģº
cd $SQOOP_HOME/conf
mv sqoop-env-template.sh sqoop-env.sh
vi sqoop-env.sh
export HADOOP_COMMON_HOME=/root/apps/hadoop/
export HADOOP_MAPRED_HOME=/root/apps/hadoop/
export HIVE_HOME=/root/apps/hive
¼ÓÈëmysqlµÄjdbcÇý¶¯°ü
cp  /hive/lib/mysql-connector-java-5.1.28.jar   $SQOOP_HOME/lib/
ÑéÖ¤Æô¶¯
bin/sqoop list-databases --connect jdbc:mysql://localhost:3306/ --username root --password hadoop
±¾ÃüÁî»áÁгöËùÓÐmysqlµÄÊý¾Ý¿â¡£
µ½ÕâÀÕû¸öSqoop°²×°¹¤×÷Íê³É¡£
2£® Sqoopµ¼Èë
“µ¼È빤¾ß”µ¼Èëµ¥¸ö±í´ÓRDBMSµ½HDFS¡£±íÖеÄÿһÐб»ÊÓΪHDFSµÄ¼Ç¼¡£ËùÓмǼ¶¼´æ´¢ÎªÎı¾ÎļþµÄÎı¾Êý¾Ý£¨»òÕßAvro¡¢sequenceÎļþµÈ¶þ½øÖÆÊý¾Ý£©¡£
ÏÂÃæµÄÓï·¨ÓÃÓÚ½«Êý¾Ýµ¼ÈëHDFS¡£
$ sqoop import (generic-args) (import-args)
Sqoop²âÊÔ±íÊý¾Ý
ÔÚmysqlÖд´½¨Êý¾Ý¿âuserdb£¬È»ºóÖ´Ðвο¼×ÊÁÏÖеÄsql½Å±¾£º
´´½¨ÈýÕűí: emp  emp_add emp_conn¡£  
2.1£® µ¼Èëmysql±íÊý¾Ýµ½HDFS
ÏÂÃæµÄÃüÁîÓÃÓÚ´ÓMySQLÊý¾Ý¿â·þÎñÆ÷ÖеÄemp±íµ¼ÈëHDFS¡£
bin/sqoop import \
--connect jdbc:mysql://node-21:3306/sqoopdb \
--username root \
--password hadoop \
--target-dir /sqoopresult \
--table emp --m 1
ÆäÖÐ--target-dir¿ÉÒÔÓÃÀ´Ö¸¶¨µ¼³öÊý¾Ý´æ·ÅÖÁHDFSµÄĿ¼£»
mysql jdbc url ÇëʹÓà ip µØÖ·¡£
ΪÁËÑéÖ¤ÔÚHDFSµ¼ÈëµÄÊý¾Ý£¬ÇëʹÓÃÒÔÏÂÃüÁî²é¿´µ¼ÈëµÄÊý¾Ý£º
hdfs dfs -cat /sqoopresult/part-m-00000
¿ÉÒÔ¿´³öËü»áÓöººÅ,·Ö¸ôemp±íµÄÊý¾ÝºÍ×ֶΡ£
1201,gopal,manager,50000,TP
1202,manisha,Proof reader,50000,TP
1203,khalil,php dev,30000,AC
1204,prasanth,php dev,30000,AC
1205,kranthi,admin,20000,TP
2.2£® µ¼Èëmysql±íÊý¾Ýµ½HIVE
½«¹ØÏµÐÍÊý¾ÝµÄ±í½á¹¹¸´ÖƵ½hiveÖÐ
bin/sqoop create-hive-table \
--connect jdbc:mysql://node-21:3306/sqoopdb \
--table emp_add \
--username root \
--password hadoop \
--hive-table test.emp_add_sp
ÆäÖУº
--table emp_addΪmysqlÖеÄÊý¾Ý¿âsqoopdbÖеıí¡£   
--hive-table emp_add_sp ΪhiveÖÐн¨µÄ±íÃû³Æ¡£
´Ó¹ØÏµÊý¾Ý¿âµ¼ÈëÎļþµ½hiveÖÐ
bin/sqoop import \
--connect jdbc:mysql://node-21:3306/sqoopdb \
--username root \
--password hadoop \
--table emp_add \
--hive-table test.emp_add_sp \
--hive-import \
--m 1
2.3£® µ¼Èë±íÊý¾Ý×Ó¼¯
--where        ¿ÉÒÔÖ¸¶¨´Ó¹ØÏµÊý¾Ý¿âµ¼ÈëÊý¾ÝʱµÄ²éѯÌõ¼þ¡£ËüÖ´ÐÐÔÚ¸÷×ÔµÄÊý¾Ý¿â·þÎñÆ÷ÏàÓ¦µÄSQL²éѯ£¬²¢½«½á¹û´æ´¢ÔÚHDFSµÄÄ¿±êĿ¼¡£
bin/sqoop import \
--connect jdbc:mysql://node-21:3306/sqoopdb \
--username root \
--password hadoop \
--where "city ='sec-bad'" \
--target-dir /wherequery \
--table emp_add --m 1
¸´ÔÓ²éѯÌõ¼þ£º
bin/sqoop import \
--connect jdbc:mysql://node-21:3306/sqoopdb \
--username root \
--password hadoop \
--target-dir /wherequery12 \
--query 'select id,name,deg from emp WHERE  id>1203 and $CONDITIONS' \
--split-by id \
--fields-terminated-by '\t' \
--m 1
2.4£® ÔöÁ¿µ¼Èë
ÔöÁ¿µ¼ÈëÊǽöµ¼ÈëÐÂÌí¼ÓµÄ±íÖеÄÐеļ¼Êõ¡£
--check-column (col)        ÓÃÀ´×÷ΪÅжϵÄÁÐÃû£¬Èçid
--incremental (mode)        append£º×·¼Ó£¬±ÈÈç¶Ô´óÓÚlast-valueÖ¸¶¨µÄÖµÖ®ºóµÄ¼Ç¼½øÐÐ×·¼Óµ¼Èë¡£lastmodified£º×îºóµÄÐÞ¸Äʱ¼ä£¬×·¼Ólast-valueÖ¸¶¨µÄÈÕÆÚÖ®ºóµÄ¼Ç¼
--last-value (value)        Ö¸¶¨×Ô´ÓÉϴε¼ÈëºóÁеÄ×î´óÖµ£¨´óÓÚ¸ÃÖ¸¶¨µÄÖµ£©£¬Ò²¿ÉÒÔ×Ô¼ºÉ趨ijһֵ
¼ÙÉèÐÂÌí¼ÓµÄÊý¾Ýת»»³Éemp±íÈçÏ£º
1206, satish p, grp des, 20000, GR
ÏÂÃæµÄÃüÁîÓÃÓÚÔÚEMP±íÖ´ÐÐÔöÁ¿µ¼È룺
bin/sqoop import \
--connect jdbc:mysql://node-21:3306/sqoopdb \
--username root \
--password hadoop \
--table emp --m 1 \
--incremental append \
--check-column id \
--last-value 1205
3£® Sqoopµ¼³ö
½«Êý¾Ý´ÓHDFSµ¼³öµ½RDBMSÊý¾Ý¿âµ¼³öǰ£¬Ä¿±ê±í±ØÐë´æÔÚÓÚÄ¿±êÊý¾Ý¿âÖС£
ĬÈϲÙ×÷ÊÇ´Ó½«ÎļþÖеÄÊý¾ÝʹÓÃINSERTÓï¾ä²åÈëµ½±íÖУ¬¸üÐÂģʽÏ£¬ÊÇÉú³ÉUPDATEÓï¾ä¸üбíÊý¾Ý¡£
ÒÔÏÂÊÇexportÃüÁîÓï·¨£º
$ sqoop export (generic-args) (export-args)
3.1£® µ¼³öHDFSÊý¾Ýµ½mysql
Êý¾ÝÊÇÔÚHDFS ÖГemp/”Ŀ¼µÄemp_dataÎļþÖУº
1201,gopal,manager,50000,TP
1202,manisha,preader,50000,TP
1203,kalil,php dev,30000,AC
1204,prasanth,php dev,30000,AC
1205,kranthi,admin,20000,TP
1206,satishp,grpdes,20000,GR
Ê×ÏÈÐèÒªÊÖ¶¯´´½¨mysqlÖеÄÄ¿±ê±í£º
mysql> USE sqoopdb;
mysql> CREATE TABLE employee (
   id INT NOT NULL PRIMARY KEY,
   name VARCHAR(20),
   deg VARCHAR(20),
   salary INT,
   dept VARCHAR(10));
È»ºóÖ´Ðе¼³öÃüÁ
bin/sqoop export \
--connect jdbc:mysql://node-21:3306/sqoopdb \
--username root \
--password hadoop \
--table employee \
--export-dir /emp/emp_data
»¹¿ÉÒÔÓÃÏÂÃæÃüÁîÖ¸¶¨ÊäÈëÎļþµÄ·Ö¸ô·û
--input-fields-terminated-by '\t'

Èç¹ûÔËÐб¨´íÈçÏÂ:

ÔòÐèÒª°Ñlocalhost¸ü¸ÄΪip»òÕßÓòÃû¡£
ʾÀýÈçÏ£¬½«µã»÷Á÷Ä£ÐÍ±íµ¼³öµ½mysql  
sqoop export \
--connect jdbc:mysql://hdp-node-01:3306/webdb --username root --password root  \
--table click_stream_visit  \
--export-dir /user/hive/warehouse/dw_click.db/click_stream_visit/datestr=2013-09-18 \
--input-fields-terminated-by '\001'

×÷ÕߣºÀÖÓã²¥¿ÍÔÆ¼ÆËã´óÊý¾ÝÅàѵѧԺ
Ê×·¢£ºhttp://cloud.itcast.cn/

0 ·ÖÏíµ½£º
ºÍÎÒÃÇÔÚÏß½»Ì¸£¡
¡¾ÍøÕ¾µØÍ¼¡¿¡¾sitemap¡¿