一、Sqoop 安装
1. 下载 sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
2. 通过sftp 从本地传到Linux
3. 解压 tar -xzvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
4. 配置/etc/profile
export SQOOP_HOME=/usr/local/sqoop-1.4.7
export PATH=$PATH:$SQOOP_HOME/bin
5. 配置sqoop环境
cd /home/hadoop/hadoop_home/sqoop-1.4.7.bin__hadoop-2.6.0/conf
cp sqoop_env_template.sh sqoop_env.sh
在sqoop-env.sh中添加以下内容
export HADOOP_COMMON_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=/usr/local/hadoop
export HIVE_HOME=/usr/local/hive
export ZOOCFDIR=/usr/local/zookeeper
export ZOOKEEPER_HOME=/usr/local/zookeeper
6. 将JDBC驱动包mysql-connector-java-5.1.46.jar导入sqoop的lib文件夹下
二、Sqoop 导数据
1. 从mysql导入hdfs
./sqoop import \
--connect jdbc:mysql://192.168.***.***:3306/salesdata?useSSL=false \
--username root \
--password ****** \
--split-by user_id \
--table user_view \
--target-dir /user/sqoop/fromMysql/user_view \
--num-mappers 8 \
--fields-terminated-by '\t'
split-by 指定按某个字段分发数据
table 知道mysql中的表名
target-dir 知道hdfs路径
num-mappers可以指定mapper运行计算数量,当指定为1时,可以不用设置split-by参数,不指定num-mappers时,默认为4,当不指定或者num-mappers大于1时,需要指定split-by参数。
sqoop的导入时候,默认导入后的文件的分割符为' , '
如果想要指定分割符需要使用--fields-terminated-by "\t",代表以"\t"作为导入后文件的分隔符
2. 从mysql导入hive
./sqoop import \
--connect jdbc:mysql://192.168.***.***:3306/salesdata?useSSL=false \
--username root \
--password *** \
--table user_pay \
--split-by user_id \
--fields-terminated-by '\t' \
--delete-target-dir \
--num-mappers 3 \
--hive-import \
--hive-database zzwods \
--hive-table user_pay