• sqoop部署与使用


    sqoop安装

    1.下载并解压

    scp sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz mini1:/root/apps/
    
    tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C install
    
    mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop
    

    2.修改配置文件

    cd sqoop/conf
    mv sqoop-env-template.sh sqoop-env.sh
    vim sqoop-env.sh
    
    export HADOOP_COMMON_HOME=/root/apps/hadoop/
    export HADOOP_MAPRED_HOME=/root/apps/hadoop/
    export HIVE_HOME=/root/apps/install/hive/
    

    3.将mysql的驱动包加入到sqoop的lib目录下

    cp /root/apps/mysql-connector-java-5.1.9.jar sqoop/lib/
    

    导入数据

    从mysql导入到hdfs

    #执行命令
    sqoop import --connect jdbc:mysql://192.168.38.3:3306/test --driver com.mysql.jdbc.Driver --username root --password 123456 --table emp --m 1
    
    --table   导出哪张表的数据
    --m		使用几个mapreduce
    --target-dir  指定导入到hdfs上的哪个目录下
    --where "city ='sec-bad'"  按条件导入数据
    --query 'select id,name,deg from emp WHERE  id>1207 and $CONDITIONS'  根据sql查询结果导入数据
    --fields-terminated-by '	' 指定字段间用什么连接,默认是逗号
    --split-by id  多个maptask时根据什么字段切片
    
    --incremental append  以增量模式导入 
    --check-column id 增量模式导入会检查id
    --last-value 1208 指明上次导入的数据中最后的id值,增量导入会根据这个值导入此id之后的
    
    #不指定输出目录时,默认输出路径是/user/用户名/表名/part-m-00000
    

    报错:

    Streaming result set com.mysql.jdbc.RowDataDynamic@73b090be is still active. 
    

    解决(2种方法):

    1.在执行命令中加入--driver com.mysql.jdbc.Driver
    2.换一个比较新的驱动jar包,但不要用6.x的,百度到的相关资料说6.x的驱动包在这里也会报错,自己没有实验过。
    

    从mysql导入到hive

    sqoop import --connect jdbc:mysql://192.168.38.3:3306/test --driver com.mysql.jdbc.Driver --username root --password 123456 --table emp --hive-import --m 1
    

    导出数据

    导出数据到mysql,要求mysql中事先有那张表。

    从hdfs导出数据到mysql

    从hive导出数据只要将hdfs的目录改成hive仓库的目录即可

    sqoop export 
    --connect jdbc:mysql://192.168.38.3:3306/test 
    --driver com.mysql.jdbc.Driver 
    --username root 
    --password 123456 
    --table employee 
    --export-dir /user/root/emp/
    
    #参数说明
    --export-dir   将哪个目录下的数据导出
    --table	将数据导出到mysql的那张表
    --fields-terminated-by '01' hive仓库里的数据默认分隔符是'01' 到处是需要指定  默认以逗号分割
  • 相关阅读:
    matplotlib
    Android 集成 支付宝支付
    android 自动化测试案例之 MonkeyRunner
    android 自动化测试案例之 MonkeyScript
    Android 使用自定义Drawable 设置圆角矩形或者圆形图片
    android 仿微信朋友圈图片选择控件
    Android 自定义控件之 日期选择控件
    android 和 js 交互
    android 蓝牙连接端(客户端)封装
    android 项目集成 微信支付
  • 原文地址:https://www.cnblogs.com/52mm/p/p19.html
Copyright © 2020-2023  润新知