Menu
hive数据同步工具Sqoop的使用
          hive数据同步工具Sqoop的使用,sqoop是一款hive大数据仓库数据同步工具,可以将mysql,oracle等关系型数据的数据同步至hive大数据仓库中,也可以将hive表中的数据同步到关系型数据库中,sqoop的使用分三步
sqoop大数据导入工具
  一、下载安装
      1.下载:因为官方并不建议在生产环境中使用1.99.7版本,所以我们还是等2.0版本出来在用新的吧,现在依然使用1.4.6版本,官方下载地址:sqoop.apache.org,下载后传到某目录下
2.安装: 
进入到该目录下,执行解压缩,也就是执行命令:
         cd    /opt/sqoop
         tar   -xvf    sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
          命令执行完成后得到了/opt/sqoop/sqoop-1.4.7.bin__hadoop-2.6.0目录
二、配置

         
     1.环境变量配置:
       编辑/etc/profile文件,添加SQOOP_HOME变量,并且将$SQOOP_HOME/bin添加到PATH变量中,编辑方法很多,可以将profile文件下载到本地编辑,也可以直接用vim命令编辑。
 
         添加的内容如下:
 
        export  JAVA_HOME=/opt/java/jdk1.8.0_121
         export  HADOOP_HOME=/opt/hadoop/hadoop-2.8.0
export  HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export  HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
export  HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib"
export  HIVE_HOME=/opt/hive/apache-hive-2.1.1-bin
export  HIVE_CONF_DIR=${HIVE_HOME}/conf
export  SQOOP_HOME=/opt/sqoop/sqoop-1.4.7.bin__hadoop-2.6.0
export  CLASS_PATH=.:${JAVA_HOME}/lib:${HIVE_HOME}/lib:$CLASS_PATH
export  PATH=.:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin: ${HIVE_HOME}/bin:${SQOOP_HOME}/bin:$PATH
 
      2.sqoop配置文件配置
/wwwdata/sqoop-1.4.7.bin__hadoop-2.6.0
 /etc/profile文件编辑完成后,执行命令:
   source    /etc/profile
  进入到/opt/sqoop/sqoop-1.4.7.bin__hadoop-2.6.0/conf目录下,也就是执行命令:
cd     /opt/sqoop//sqoop-1.4.7.bin__hadoop-2.6.0/conf
      将sqoop-env-template.sh复制一份,并取名为sqoop-env.sh,也就是执行命令:
cp    sqoop-env-template.sh  sqoop-env.sh
编辑这个新建的sqoop-env.sh文件,编辑方法有很多,可以下载到本地编辑,也可是使用vim命令编辑。
       在该文件末尾加入下面的配置:
export  HADOOP_COMMON_HOME=/wwwdata/hadoop-2.6.0-cdh5.13.0
export  HADOOP_MAPRED_HOME=/wwwdata/hadoop-2.6.0-cdh5.13.0
export  HIVE_HOME=/wwwdata/apache-hive-3.0.0-bin
       说明:上面的路径修改为自己的hadoop路径和hive路径。
三、sqoop使用
1.sqoop链接mysql查看表
sqoop list-tables --username root2 --password 'xxxxx' --connect jdbc:mysql://192.168.0.336:3306/xxxx?characterEncoding=UTF-8
2.通过mysql表创建hive表
sqoop create-hive-table --connect jdbc:mysql://xxxxx:3306/xxxx?characterEncoding=UTF-8 --table xxx --username root -password 'xxxx' --fields-terminated-by ',' --hive-database expodata --hive-table xxx
3.mysql表中的数据全量导入hive中
sqoop import --connect jdbc:mysql://xxxxx:3306/xxx?characterEncoding=UTF-8 --table xx --username root -password 'xxx' --fields-terminated-by ',' --hive-import --hive-database expodata --hive-table xxx-m 1
4.mysql表中查询导入hive中(可用于增量导入)
sqoop import --connect jdbc:mysql://xxx:3306/xxx?characterEncoding=UTF-8 --username root -password 'xxxx' --query 'select * from xxx where to_days(time) = to_days(now()) AND $CONDITIONS' --fields-terminated-by ',' --hive-import --target-dir /user/hive/warehouse/xxx --hive-database expodata --hive-table ddd -m 1
sqoop是一款非常优秀的hive数据仓库同步工具,同步命令可以使用linixshell脚本执行,通过创建定时任务实现增量导入的目的