zoukankan      html  css  js  c++  java
  • Sqoop(一)安装及基本使用

    Sqoop:
        1、sqoop从数据库中导入数据到HDFS
        2、SQOOP从数据库导入数据到hive
        3、sqoop从hive中将数据导出到数据库
     
    sqoop底层还是执行的mapreduce程序,,但是特殊的地方只有map TASK
        可以实现:企业级数据仓库、文档型系统、关系型数据库<-->
     
    sqoop安装:
        1、tar -zxvf sqoop-1.4.6-cdh5.5.2.tar.gz
        2、将mysql的驱动包mysql-connector-java-5.1.43.jar拷贝到sqoop home/lib下面
            cp mysql-connector-java-5.1.43.jar sqoop-1.4.6-cdh5.5.2/lib/
        3、配置环境变量
            export SQOOP_HOME=/yang/sqoop-1.4.6-cdh5.5.2
            export PATH=$PATH:$SQOOP_HOME/bin
        4、配置SQOOP ,cd sqoop-1.4.6-cdh5.5.2/conf/
            mv sqoop-env-template.sh sqoop-env.sh
            
            export HADOOP_COMMON_HOME=/yang/hadoop-2.6.5
            export HADOOP_MAPRED_HOME=/yang/hadoop-2.6.5
            export HBASE_HOME=/yang/hbase-1.2.5
            export HIVE_HOME=/yang/apache-hive-2.1.1-bin
     
        5、source /etc/profile
        6、sqoop version
     
     开始使用:
            前提:mysql可以正常使用
            hdfs服务开启start-dfs.sh start-yarn.sh
            hive服务开启 nohup hive --service metastore &
     查看数据库有哪些表
                sqoop list-tables --connect jdbc:mysql://192.168.100.121:3306/big_data --username root -P
                或者(上面大写P会让你在控制台输入密码)
                sqoop list-tables --connect jdbc:mysql://192.168.100.121:3306/big_data --username root --password 1234
                sqoop list-tables --connect jdbc:mysql://192.168.100.121:3306/big_data --username root -P
     
     #使用 sqoop将数据库的数据导入到 Hdfs(地址使用默认地址/user/$user/tabname)
    斜杠后面不能有空格 而且需要启动yarn,因为要sqoop底层要执行mapreduce
    当执行报错;classwrite的时候加入:--driver com.mysql.jdbc.Driver
    sqoop import
    --driver com.mysql.jdbc.Driver
    --username root
    --password 1234
    --table t_area 需要放入那张表
                
                 #使用指定的输出目录 --target-dir /tmp
                #使用指定的并发数量 -m 2
    sqoop import
    --driver com.mysql.jdbc.Driver
    --username root
    --password 1234
    --table t_area
    --target-dir /sqoop
    -m 2
    #使用sqoop将HDFS文件导出到 MYSQL 表中,默认MAP为 4个 ,先将空表建好t_area_copy1
    sqoop export
    --driver com.mysql.jdbc.Driver
    --table t_area_copy1
    --username root
    --password 1234
     
    mysql导入到hive:
        注意需要启动服务:hive服务开启 nohup hive --service metastore &
                        再来启动hive
         #使用自定义的条件,并且过滤字段,并发数为1
    #切分的字段可以更改为另外一个字段  
    sqoop import
    --hive-import
    --hive-table t_area
    --username root
    --password 1234
    --query "SELECT * from t_area where $CONDITIONS"   //将mysql中的表导入到hive表t_area
    --fields-terminated-by "," //按,分割,首先在hive中将表建好(z字段对应),并按,分割
    --lines-terminated-by " "
    --target-dir /tmp/aa //临时存放的目录
    -m 1
    异常:org.apache.hadoop.hive.conf.HiveConf
        Make sure HIVE_CONF_DIR is set correctly
        解决:
        在/etc/profile下面加上:
            HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/*
            分布发送到其他主机上 source 一下
        
    sqoop export
    将hive的数据导出到mysql:是通过hdfs中的路径导入到mysql中
    如果需要通过导入指定行的话,需要建立中间表
    --driver com.mysql.jdbc.Driver
    --table t_area1     //导入到mysql表t_area1
    --username root
    --password 1234     
    --export-dir /user/hive/warehose/t_area           这个文件路径从hdfs上知道
    --input-fields-terminated-by ',' 是以,分割的  
  • 相关阅读:
    React项目安装过程及node版本太老引发问题
    利用git上传、拉取代码,密码和用户名字不正确时,如何操作
    Vue和react的优缺点
    同步异步差别
    深拷贝和浅拷贝区别
    vue项目引用Swiper.js在低版本浏览器出现错误
    uniApp h5分享实现
    input上传图片样子太丑了,实现美化的tips
    关于cli3.0跨域的处理
    webpack4.0
  • 原文地址:https://www.cnblogs.com/yfb918/p/10411507.html
Copyright © 2011-2022 走看看