Sqoop

匿名 (未验证) 提交于 2019-12-03 00:34:01

1、解压 tar -zxvf sqoop-1.4.6-cdh5.7.0.tar.gz -C ../app/ 2、解压的文件所属者更改 chown -R hadoop:hadoop sqoop-1.4.6-cdh5.7.0 3、设置环境变量 vim ~/.bash_profile 4、添加 #Sqoop export SQOOP_HOME=/home/hadoop/app/sqoop-1.4.6-cdh5.7.0 export PATH=$SQOOP_HOME/bin:$PATH 5、生效 source ~/.bash_profile 6、检测 $SQOOP_HOME

1、拷贝一个sqoop-env.sh文件 cp sqoop-env-template.sh sqoop-env.sh 2、配置Hadoop的环境 export HADOOP_COMMON_HOME=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0 3、配置MapReduce的环境 export HADOOP_MAPRED_HOME=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0 4、配置Hive的环境 export HIVE_HOME=/home/hadoop/app/hive-1.1.0-cdh5.7.0

cp mysql-connector-java-5.1.46-bin.jar $SQOOP_HOME/lib/ cp java-json.jar $SQOOP_HOME/lib/

1、查看sqoop有哪些命令 sqoop help  2、查看版本 sqoop version 3、查看不懂的命令 sqoop help xxx

list-databases,这个命令是列出所有可用的数据库。怎么用?使用sqoop help list-databases,可以知道有一些常用的参数需要设置。

sqoop list-databases \ --connect jdbc:mysql://hadoop001:3306 \ --username root \ --password root

sqoop import。如果对于命令不懂可以使用sqoop help import

在mysql的命令行中,输入 source /tmp/emp.sql 这样就导入了emp表和dept表
sqoop import \ --connect jdbc:mysql://hadoop001:3306/mysqoopdata \ --username root --password root \ --table emp -m 2 \ --mapreduce-job-name FromMySQLToHDFS \ --delete-target-dir \ --columns "EMPNO,ENAME,JOB,SAL,COMM" \ --target-dir EMP_COLUMN_WHERE \ --fields-terminated-by '\t' \ --null-string '' --null-non-string '0' \ --where 'SAL>2000'

emp.job”,运行的时候默认采用4个MapTask做运算(指定需要使用 -m),并且获取emp表的主建最大值和最小值,均等划分主键在MapTask任务上,最终产生4个文件。默认输出的路劲就是HDFS:/user/${user}/emp 下。

--query "SELECT * FROM emp WHERE EMPNO>=7566 AND  \$CONDITIONS" \ --split-by 'EMPNO' 

$CONDITIONS”这个语句,如果用双引号,$是要转义,单引号$不需要转义。CONDITIONS这个和并行化计算有关,记住一定要带上就行了。

将运行参数写到一个脚本文件中,如 emp.opt vim emp.opt 将参数写入到这个文件,如 import --connect jdbc:mysql://hadoop001:3306/mysqoopdata --username root --password root --table emp 注意,一个命令一行,前后不能有空格。 按照如下方式执行就可以了,和原来的一样。 sqoop --options-file emp.opt

sqoop export \ --connect jdbc:mysql://hadoop001:3306/mysqoopdata \ --username root --password root \ -m 2 \ --mapreduce-job-name FromHDFSToMySQL \ --table emp_demo \ --export-dir /user/hadoop/emp \ --input-fields-terminated-by '\t' \ --input-null-string '' \ --input-null-non-string '0'

sqoop import \ --connect jdbc:mysql://hadoop001:3306/mysqoopdata \ --username root --password 123456 \ --table emp -m 2 \ --mapreduce-job-name FromMySQLToHive \ --delete-target-dir \ --hive-database database_test \ --hive-table emp \ --hive-import \ --fields-terminated-by '\t' \ --hive-overwrite \ --create-hive-table

Could not load org.apache.hadoop.hive.conf.HiveConf,这个因为运行的时候需要用到Hive的一些jar包,所以两种解决方式,一个是将${HIVE_HOME}/lib/*.jar复制到当前${SQOOP_HOME}\lib下,第二种,使用全局变量,让Sqoop知道jar包在哪:

vi ~/.bash_profile export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/* source ~/.bash_profile

[Error 10072]: Database does not exist,将${HIVE_HOME}/conf/hive-site.xml到${SQOOP_HOME}\conf下。

empno                   int                                          ename                   string                                       job                     string                                       mgr                     int                                          hiredate                string                                       sal                     int                                          comm                    int                                          deptno                  int     


create table emp_partition  (empno int, ename string, job string, mgr int, hiredate string, sal double, comm double, deptno int) partitioned by (pt string) ROW FORMAT DELIMITED  FIELDS TERMINATED BY '\t'

sqoop import \ --connect jdbc:mysql://hadoop001:3306/mysqoopdata \ --username root --password root \ --table emp -m 2 \ --mapreduce-job-name FromMySQLToHive \ --delete-target-dir \ --hive-database database_test \ --hive-table emp_partition \ --hive-import \ --hive-partition-key 'pt' \ --hive-partition-value '2018-08-08' \ --fields-terminated-by '\t' --hive-overwrite 

sqoop export \ --connect jdbc:mysql://hadoop001:3306/mysqoopdata \ --username root --password root \ -m 2 \ --mapreduce-job-name FromHDFSToMySQL \ --table emp_demo \ --export-dir /user/hive/warehouse/database_test.db/emp_partition/pt=2018-08-08 \ --input-fields-terminated-by '\t' 

sqoop help job查看使用方法。

1、创建一个job,该job作用是将Mysql数据导入到HDFS sqoop job --create myjob -- \ import \ --connect jdbc:mysql://hadoop001:3306/mysqoopdata \ --username root --password root \ --table emp -m 2 \ --mapreduce-job-name FromMySQLToHDFS \ --delete-target-dir \ --target-dir EMP_COLUMN_WHERE \ --fields-terminated-by '\t' \ --null-string '' --null-non-string '0' \

,这样可以定时运行任务。

文章来源: Sqoop
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!