zoukankan      html  css  js  c++  java
  • Sqoop

    1、sqoop

    flume数据采集 采集日志数据
    sqoop数据迁移 hdfs->mysql
    azkaban任务调度 flume->hdfs->shell->hive->sql->BI

    sqoop数据迁移=mapreduce
    处理离线数据
    整个过程就是数据导入处理导出过程
    直接使用map

    sqoop作用:简化开发
    mysql->hdfs
    mapreduce
    sqoop!

    2、概述:

    Apache Sqoop(TM)是一种工具,用于在Apache Hadoop和结构化数据存储(如关
    系数据库)之间高效传输批量数据 。数据迁移!
    Sqoop于2012年3月成功从孵化器毕业,现在是一个顶级Apache项目: 更多信息

    3、sqoop安装部署

    1)下载

    2)上传

    3)解压

    4)重命名
    mv sqoop-env-template.sh sqoop-env.sh

    5)添加配置信息
    export HADOOP_COMMON_HOME=/root/hd/hadoop-2.8.4
    export HADOOP_MAPRED_HOME=/root/hd/hadoop-2.8.4
    export HIVE_HOME=/root/hd/hive
    export ZOOCFGDIR=/root/hd/zookeeper-3.4.10/conf

    6)启动查看版本号
    bin/sqoop version

    4、sqoop的import导入

    import导入:mysql->hdfs
    export导出:hdfs->mysql
    mysql->hdfs操作:
    1)导入mysql驱动到sqoop/lib下
    2)命令操作
    mysql> create database sqoop;
    mysql> use sqoop;
    mysql> create table user(id int primary key auto_increment,name varchar(50),addr varchar(300));

    [root@hsiehchou121 sqoop]# bin/sqoop import
    > --connect jdbc:mysql://hsiehchou121:3306/sqoop
    > --username root
    > --password root
    > --table user
    > --target-dir /sqoop/datas
    > --num-mappers 1
    > --fields-terminated-by " "

    注意:如果显示mysql的访问权限问题,需要设置mysql的用户权限:所在库 mysql库的user表

    update user set host=’%’ where host=’localhost’;
    delete from user where Host=’127.0.0.1’;
    delete from user where Host=’hsiehchou121’;
    delete from user where Host=’::1’;
    flush privileges;

    使用query对数据进行过滤

    [root@hsiehchou121 sqoop]# bin/sqoop import
    > --connect jdbc:mysql://hsiehchou121:3306/sqoop
    > --username root
    > --password root
    > --target-dir /sqoop/selectimport
    > --num-mappers 1
    > --fields-terminated-by " "
    > --query 'select * from user where id<=1 and $CONDITIONS'

    直接过滤字段

    [root@hsiehchou121 sqoop]# bin/sqoop import
    > --username root
    > --password root
    > --connect jdbc:mysql://hsiehchou121:3306/sqoop
    > --target-dir /sqoop/selectimport1
    > --num-mappers 1
    > --table user
    > --columns addr

    5、mysql导入到hive

    在~/.bash_profile里面增加下面配置

    export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/root/hd/hive/lib/*
    export HADOOP_USER_HOME=root
    [root@hsiehchou121 sqoop]# bin/sqoop import
    > --connect jdbc:mysql://hsiehchou121:3306/sqoop
    > --username root
    > --password root
    > --table user
    > --num-mappers 1
    > --hive-import
    > --fields-terminated-by " "
    > --hive-overwrite
    > --hive-table user_sqoop

    6、sqoop的export命令

    hive->mysql
    hive导出到mysql
    首先清空mysql里面的user:truncate table user;

    [root@hsiehchou121 sqoop]# bin/sqoop export
    > --connect jdbc:mysql://hsiehchou121:3306/sqoop
    > --username root
    > --password root
    > --table user
    > --num-mappers 1
    > --export-dir /user/hive/warehouse/user_sqoop
    > --input-fields-terminated-by " "

    7、常用参数

    import 导入数据到集群
    export 从集群导出数据
    create-hive-table 创建hive表
    import-all-tables 指定关系型数据库所有表到hdfs集群
    list-databases 列出所有数据库
    list-tables 列出所有数据库表
    merge 合并hdfs中的不同目录下的数据
    codegen 获取某张表数据生成JavaBean 并打包

    [root@hsiehchou121 sqoop]# bin/sqoop codegen
    > --connect jdbc:mysql://hsiehchou121:3306/sqoop
    > --username root
    > --password root
    > --table user
    > --bindir /root/sqoopjar/UserBean
    > --class-name UserBean
    > --fields-terminated-by " "
    [root@hsiehchou121 sqoop]# bin/sqoop list-databases
    > --connect jdbc:mysql://hsiehchou121:3306/
    > --username root
    > --password root
    [root@hsiehchou121 sqoop]# bin/sqoop merge
    > --new-data /testmerge/new/
    > --onto /testmerge/old/
    > --target-dir /testmerge/merged table user
    > --jar-file /root/sqoopjar/UserBean/UserBean.jar
    > --class-name UserBean
    > --merge-key id

    注意:
    merge操作是一个新表替代旧表的操作,如果有冲突id的话新表数据替换旧表数据,如果没有冲突则是新表数据添加到旧表的数据

    用户画像 merge
    身高180 体重70 爱好 …..
    身高180 体重90 爱好….

    广告大数据 提高销量 广告推送更加精准
    工业大数据 flink面试

  • 相关阅读:
    最短路打印路径
    hdu1874(dijskstra算法和floyd算法)
    最短路径(Dijkstra算法)
    kruskal算法模板(续)
    kruskal算法模板
    最小生成树prim算法
    hdu1879(并查集)
    hdu1875 并查集
    top 1 1
    mvc 母版页中登录注册和问候的处理
  • 原文地址:https://www.cnblogs.com/hsiehchou/p/10505027.html
Copyright © 2011-2022 走看看