热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

sqoop(3):import之mysql/sqlserver/pgsql/OracleTohive

一、mysqlToHive1.配置(1)往etcprofile最后加入exportHADOOP_CLASSPATH$HADOOP_CLASSPAT
一、mysqlToHive

1.配置

(1)往/etc/profile最后加入 

export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/opt/modules/hive-1.2.1/lib/*

然后刷新配置

source /etc/profile

(2) 把hive-site复制到sqoop中!

 cp ../hive-1.2.1/conf/hive-site.xml  conf/

2.命令:

bin/sqoop import \
--connect jdbc:mysql://bigdata.ibeifeng.com:3306/sqoop \
--username root \
--password 123456 \
--table tohdfs \
--direct \
--delete-target-dir \
--hive-import \
--hive-database student \
--hive-table stu_info \
--num-mappers 1 \
--fields-terminated-by '\t'

二、Sqlserver To Hive

1.环境

(1)CDH5.15.2(sqoop1)

(2)centos7.4

(3)sqlserver 2017

2.配置环境

(1)下载连接sql server的jar包,下载路径

https://docs.microsoft.com/zh-cn/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-2017

或者从maven仓库下载对应版本,以mssql-jdbc-6.1.0.jre8.jar为例

(2)放到cdh的sqoop的lib目录下

/opt/cloudera/parcels/CDH/lib/sqoop/lib

3.执行导入hive语句

sqoop import \
--connect 'jdbc:sqlserver://ip:1433;database=master' \
--username 'sa' \
--password '[Root_123]' \
--table 'student2' \
--direct \
--delete-target-dir \
--hive-import \
--hive-database test2 \
--hive-table student2_ms \
--num-mappers 1 \
--fields-terminated-by '\t'

三、postgresql To Hive

1.环境

(1)postgresql

(2)cdh5.15.2

2.下载postgresql的jdbc驱动包postgresql-42.2.2.jar

3.postgresql数据库信息

(1)端口(默认):5432 

4.创建pgsql数据表student

SELECT * FROM "student"
1    zhangsan    20    female
2    lisi    34    male
3    wangwu    35    male
4    wangwu3    35    male

5.切换到hdfs用户,运行sqoop命令

su – hdfs

备注:如果使用root用户,则会报错

Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x        at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.checkFsPermission

    原因:使用root用户运行命令,但是root用户在hdfs上不是万能用户,hdfs上管理员权限是hdfs用户。所以,需要切换到hdfs用户再运行命令。

6. 将jar(postgresql-42.2.2.jar)包放到cm的sqoop的lib下

/opt/cloudera/parcels/CDH/lib/sqoop/lib/postgresql-42.2.2.jar

7.sqoop导入到hive

sqoop import --connect jdbc:postgresql://ip:5432/bigdata --username postgres --password 123456 --table student --hive-import --hive-overwrite --hive-database test --hive-table student2  --lines-terminated-by "\n" --fields-terminated-by "\t" --m 2
四、oracle To Hive

1.环境

(1)oracle

(2)cdh5.15.2

2.导入hive命令

sqoop import --connect jdbc:oracle:thin:@ip:1521:orcl --username=username --password=Root_123 \
--table STUDENT3 \
--delete-target-dir \
--hive-import \
--hive-database test2 \
--hive-table student2_or \
-m 1 \
--fields-terminated-by '\t'

3.报错

(1)描述:当导入STUDENT这张表的时候,报错

Error: java.io.IOException: SQLException in nextKeyValueat org.apache.sqoop.mapreduce.db.DBRecordReader.nextKeyValue(DBRecordReader.java:277)at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.nextKeyValue(MapTask.java:562)at org.apache.hadoop.mapreduce.task.MapContextImpl.nextKeyValue(MapContextImpl.java:80)at org.apache.hadoop.mapreduce.lib.map.WrappedMapper$Context.nextKeyValue(WrappedMapper.java:91)at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144)at org.apache.sqoop.mapreduce.AutoProgressMapper.run(AutoProgressMapper.java:64)at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:793)at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)at java.security.AccessController.doPrivileged(Native Method)at javax.security.auth.Subject.doAs(Subject.java:422)at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1924)at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
Caused by: java.sql.SQLSyntaxErrorException: ORA-00904: "CLASS": invalid identifierat oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:447)at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:951)at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:513)at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:227)at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:208)at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:886)at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1175)at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1296)at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3613)at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3657)at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1495)at org.apache.sqoop.mapreduce.db.DBRecordReader.executeQuery(DBRecordReader.java:111)at org.apache.sqoop.mapreduce.db.DBRecordReader.nextKeyValue(DBRecordReader.java:235)... 12 more

(2)原因:因为这张表是使用Navicat Premium创建的,而Navicat创建oracle表的时候,默认列名用双引号引着,而oracle默认是不区分大小写的,所以导致报错,如果把双引号去掉,即可。即用Navicat创建的时候是:

CREATE TABLE "STUDENT"(
"id" NUMBER(10,0) NOT NULL ENABLE,
"name" VARCHAR2(20 CHAR) NOT NULL ENABLE,
PRIMARY KEY (ID)
)

(3)解决办法:把“”冒号去掉,即可

CREATE TABLE STUDENT(
id NUMBER(10,0) NOT NULL ENABLE,
name VARCHAR2(20 CHAR) NOT NULL ENABLE,
PRIMARY KEY (ID)
)

五、总结

1.参考资料:官网

http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.6-cdh5.15.2/SqoopUserGuide.html


推荐阅读
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • Oracle10g备份导入的方法及注意事项
    本文介绍了使用Oracle10g进行备份导入的方法及相关注意事项,同时还介绍了2019年独角兽企业重金招聘Python工程师的标准。内容包括导出exp命令、删用户、创建数据库、授权等操作,以及导入imp命令的使用。详细介绍了导入时的参数设置,如full、ignore、buffer、commit、feedback等。转载来源于https://my.oschina.net/u/1767754/blog/377593。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • Java自带的观察者模式及实现方法详解
    本文介绍了Java自带的观察者模式,包括Observer和Observable对象的定义和使用方法。通过添加观察者和设置内部标志位,当被观察者中的事件发生变化时,通知观察者对象并执行相应的操作。实现观察者模式非常简单,只需继承Observable类和实现Observer接口即可。详情请参考Java官方api文档。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
    本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
author-avatar
zhihong520珠珠_448
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有