sqoop = sql + hadoop

1,系统方面的准备

scp ./ojdbc6.jar root@server-1:/usr/hdp/2.6.0.3-8/sqoop/lib/
scp ./ojdbc6.jar root@server-2:/usr/hdp/2.6.0.3-8/sqoop/lib/

cd /usr/hdp/2.6.0.3-8/sqoop/lib/
chmod 755 ojdbc6.jar

学习了:https://www.cnblogs.com/jxhd1/p/6528574.html
su root
# usermod -a -G hadoop user001 '把user001用户添加到hadoop组中
# usermod -a -G hdfs user001 '把user001用户添加到hdfs组中

2,sqoop导入到hdfs中
学习了:http://blog.csdn.net/yu616568/article/details/45030739

'可行,识别--connection-manager,主要是-m 2进行并行导入
sqoop import --connect jdbc:Oracle:thin:@127.0.0.1:1521:ora --connection-manager org.apache.sqoop.manager.OracleManager --username admin --password admin -m 2 --split-by id --query 'SELECT t.* FROM tbl01 t where $CONDITIONS' --target-dir '/user/user001/tbl01'

'方法2 ,用--driver指定了类,-m 1 进行导入了
sqoop import --connect jdbc:Oracle:thin:@127.0.0.1:1521:ora --username admin --password admin -m 1 --driver oracle.jdbc.driver.OracleDriver --query 'SELECT * FROM tbl02 t where 1=1 and $CONDITIONS' --target-dir '/user/user001/tbl02'

‘方法3 , 查看源码之后org.apache.sqoop.manager.OracleManager.OracleManager(SqoopOptions),

'里面:    } else if (scheme.startsWith("jdbc:oracle:")) {, 注意自己的连接串写的不规范

sqoop import --connect jdbc:oracle:thin:@127.0.0.1:1521:ddxt11 --username admin --password admin   -m 2 --split-by id --query 'SELECT t.* FROM tbl01  t where $CONDITIONS' --target-dir '/user/user001/tbl01'

‘方法4, 表名(TBL01)、列名(--split-by ID)都要大写,不大写就报错给你看;

'主要是生成的sql语句:SELECT t.* FROM "TBL01" t WHERE 1=0,SELECT MIN("NAME1"), MAX("NAME1") FROM "TBL01"

sqoop import --connect jdbc:oracle:thin:@127:1521:ddxt11 --username admin  --password admin -m 2 --split-by ID --table TBL01 --target-dir '/user/user001/tbl01'

3,数据库表从hdfs中导入到hive中

user001用户登录:

>hive

>show databases;

>create database admin;

>use admin;

>create table tbl01
(
id bigint comment '父id',
pid bigint comment '父id',
name1 VARCHAR(16) comment 'a',
name2 VARCHAR(64) comment 'b',
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
stored as textfile;

在hive中执行:
load data inpath '/user/user001/tbl01/part-m-00000' into table admin.tbl01;

在user001用户中执行:

必须先把表tbl01创建出来;
hive -e "load data inpath '/user/user001/tbl01/part-m-00000' into table admin.tbl01;"
或者
hive -f '/websoftware/tbl01_imp.sql'

不会报错了;需要把user001添加到hdfs组下面;
因为hadoop fs -ls /apps/hive/warehouse 输出:
drwxrwxrwx - user001 hdfs 0 2017-11-09 10:00 /apps/hive/warehouse/admin.db
drwxrwxrwx - user001 hdfs 0 2017-11-02 15:14 /apps/hive/warehouse/hive_test.db
hive存储文件的地方,需要使用hdfs组权限;

user001用户下面:直接从hdfs下面move到hive下面;
方法2,方法1是在hive下面使用load data 方法;
hadoop fs -mv /user/user001/d_zmzd/part-m-00000 /apps/hive/warehouse/admin.db/tbl02

hadoop-16-sqoop导入oracle数据的更多相关文章

  1. sqoop将oracle数据导入hdfs集群

    使用sqoop将oracle数据导入hdfs集群 集群环境: hadoop1.0.0 hbase0.92.1 zookeeper3.4.3 hive0.8.1 sqoop-1.4.1-incubati ...

  2. Sqoop导入mysql数据到Hbase

    sqoop import --driver com.mysql.jdbc.Driver --connect "jdbc:mysql://11.143.18.29:3306/db_1" ...

  3. sqoop导入增量数据

    使用sqoop导入增量数据. 核心参数 --check-column 用来指定一些列,这些列在增量导入时用来检查这些数据是否作为增量数据进行导入,和关系行数据库中的自增字段及时间戳类似这些被指定的列的 ...

  4. Hive中导入Oracle数据错误:Listener refused the connection with the following error: ORA-12505

    问题: 今天往Hive中导入Oracle数据的时候碰到了如下错误:Listener refused the connection with the following error: ORA-12505 ...

  5. sqoop导oracle数据到hive中并动态分区

    静态分区: 在hive中创建表可以使用hql脚本: test.hql USE TEST; CREATE TABLE page_view(viewTime INT, userid BIGINT, pag ...

  6. sqoop 导入增量数据到hive

    版本 hive:apache-hive-2.1.0 sqoop:sqoop-1.4.6 hadoop:hadoop-2.7.3 导入方式 1.append方式 2.lastmodified方式,必须要 ...

  7. Sqoop导入MySQL数据

    导入所有表: sqoop import-all-tables –connect jdbc:mysql://ip:port/dbName --username userName --password p ...

  8. 使用MySQL Migration Toolkit快速导入Oracle数据

    近来笔者有项目需要将原有的Oracle数据库中的数据导入到MySQL中,经过试用发现MySQL GUI Tools中的MySQL Migration Toolkit可以非常方便快捷的将Oracle数据 ...

  9. 解决sqoop 导入oracle表时 --split-by参数为日期类型时的报错:ORA-01861: literal does not match format string

    报错栈: -- ::, INFO [main] org.apache.sqoop.mapreduce.db.DBRecordReader: Executing query: select " ...

随机推荐

  1. PHP动态函数处理

    public class Student{ public function speek($name){ echo 'my name is '.$name; } } $method='speek'; $ ...

  2. 在IDEA中代码自动提示第一个字母大小写必须匹配的解决

    在IDEA中代码自动提示第一个字母大小写必须匹配的解决 学习了:http://blog.csdn.net/babys/article/details/41775715 setting>Edito ...

  3. Android,iOS打开手机QQ与指定用户聊天界面

    在浏览器中能够通过JS代码打开QQ并弹出聊天界面.一般作为客服QQ使用. 而在移动端腾讯貌似没有发布提供相似API,可是却能够使用schema模式来启动手机QQ. 下面为详细代码: Android: ...

  4. 对Shell几个冷知识的总结(IFS,数组,替换,分割,查找)

    IFS: 对IFS的用处直接进行说明,详细IFS是干什么的...自行谷歌 首先创建一个 "a a",和"a"的文件: 然后我们 ls查看一下: --> l ...

  5. bzoj5106: [CodePlus2017]汀博尔(二分答案)

    5106: [CodePlus2017]汀博尔 题目:传送门 题解: 百题纪念!!! 原谅一下第一百题刷了到水题... 直接二分月份然后判断(注意上界大小) 代码: #include<cstdi ...

  6. m_Orchestrate learning system---三、session使用完整流程是什么

    m_Orchestrate learning system---三.session使用完整流程是什么 一.总结 一句话总结: 1.在登录成功之后设置session和cookie 2.在公共控制器里面使 ...

  7. [jzoj 5178] [NOIP2017提高组模拟6.28] So many prefix? 解题报告(KMP+DP)

    题目链接: https://jzoj.net/senior/#main/show/5178 题目: 题解: 我们定义$f[pos]$表示以位置pos为后缀的字符串对答案的贡献,答案就是$\sum_{i ...

  8. Codeforces 659F Polycarp and Hay 并查集

    链接 Codeforces 659F Polycarp and Hay 题意 一个矩阵,减小一些数字的大小使得构成一个连通块的和恰好等于k,要求连通块中至少保持一个不变 思路 将数值从小到大排序,按顺 ...

  9. Core Java(二)

    二 .JAVA语言基础 1.注释,标识符,关键字  Comments         用于解释说明程序的文字 Java中注释分类格式 单行注释:格式: //注释文字                多行 ...

  10. MySQL学习(五)——使用JDBC完成用户表CRUD的操作

    通过案例我们发现“获得连接”和“释放资源”两次代码将在之后的增删改查所有功能中都存在,开发中遇到此种情况,将采用工具类的方法进行抽取,从而达到代码的重复利用. 1.使用properties配置文件 开 ...