zoukankan      html  css  js  c++  java
  • sqoop课堂总结

    一、将mysql数据库中表的数据导入到hdfs

    1.sqoop的参数
    sqoop import
    --connect jdbc:mysql://master:3306/数据库名
    --username root
    --password 123456
    --table 表名
    --target-dir '路径' (目标路径必须不存在)
    --fields-terminated-by ',' (表中数据截取规则)
    -m 1;

    注:import 将mysql数据库中表的数据导入到hdfs/hive
    代表换行,后面不能有空格

    2.增加where条件
    sqoop import
    --connect jdbc:mysql://master:3306/test
    --username root
    --password 123456
    --table person
    --where 'age<18'
    --target-dir '/mysql/person'
    --fields-terminated-by ','
    -m 1;

    注:条件必须用引号引起来

    3.增加query语句
    sqoop import
    --connect jdbc:mysql://master:3306/数据库名
    --username root
    --password 123456
    --query 'select * from 表名 where 条件 ADD $CONDITIONS'
    --split-by 表名.列名
    --target-dir '路径'
    --fields-terminated-by ','
    -m 3; mapper使用的个数(一般为n=1) 指定map数量 -m n

    注:如果使用query语句必须使用ADD $CONDITIONS 表示语句已达到末尾
    如果设置map数量为1时,即-m 1,不用加上--split-by 表名.列名,否则需要添加
    增加query语句后,不用写--table参数和--where参数

    [root@master ~]# sqoop import
    > --connect jdbc:mysql://master:3306/test
    > --username root
    > --password 123456
    > --query 'select * from person where age<19 AND $CONDITIONS'
    > --split-by Person.id
    > --target-dir '/mysql/person'
    > --fields-terminated-by ','
    > -m 3;


    部分任务可以正常跑,部分问题报错
    报错信息如下:
    Ended Job = job_1527476268558_132947 with exception 'java.io.IOException(java.net.ConnectException:
    Call From xxx/xxx to xxx:10020 failed on connection exception: java.net.ConnectException: 拒绝连接;
    For more details see: http://wiki.apache.org/hadoop/ConnectionRefused)'

    yarn报错,任务不能访问jobhistory,启动historyserver就行
    [root@master sbin]# ./mr-jobhistory-daemon.sh start historyserver

    登录mysql命令
    mysql -u root -p

    二、将mysql数据导入到hive中
    准备工作:需要2个hive的jar包,将hive-1.1.0-cdh5.7.0/lib/中的
    hive-common-1.1.0-cdh5.7.0.jar,hive-exec-1.1.0-cdh5.7.0.jar
    cp到sqoop-1.4.6-cdh5.7.0/lib中
    [root@master ~]# cd app/hive-1.1.0-cdh5.7.0/lib/
    [root@master lib]# cp hive-common-1.1.0-cdh5.7.0.jar /root/app/sqoop-1.4.6-cdh5.7.0/lib
    [root@master lib]# cp hive-exec-1.1.0-cdh5.7.0.jar /root/app/sqoop-1.4.6-cdh5.7.0/lib

    mysql导入数据到hive

    sqoop import
    --connect jdbc:mysql://master:3306/数据库名
    --username root
    --password 123456
    --table 表名
    --hive-import
    --hive-database hive数据库名
    --hive-table hive表名
    --columns 表字段
    --delete-target-dir
    --fields-terminated-by ','
    -m 1;

    注:如果将mysql数据库表的全部数据导入到hive,--columns参数不用写

    三、将hive下的person表的数据导出到mysql的person表
    sqoop export
    --connect jdbc:mysql://master:3306/数据库名
    --username root
    --password 123456
    --table person
    --export-dir "/user/hive/warehouse/lpy2/person/part-m-00000"
    --input-fields-terminated-by ','
    -m 1;

    mysql建表字符串类型用的是varchar,不是string

    hive复制表(复制表结构和数据)
    create table 新表 截取规则 as 查询语句;
    create table person1 row format delimited fields terminated by ' ' as select * from person;

    like(复制表结构)
    create table 新表 like 老表;

  • 相关阅读:
    Notepad++ 配置信息导出导入(快捷键配置导出导入等等)
    SQL 删除重复数据
    PostgreSQL Update 根据B表更新A表
    桌面应用基本创建流程
    Android shape和selector完全总结
    Android 第三方框架之Charts
    java常见五种排序方式
    Objective-c之字典精讲
    OC语言之---NSArray
    Objective-c编程之NSString精讲
  • 原文地址:https://www.cnblogs.com/LEPENGYANG/p/14039593.html
Copyright © 2011-2022 走看看