sqoop笔记

摘要:
sqoop应该算是一个ETL工具,方便的数据导入导出功能。whichhadoop可以得到hadoop的路径,删除后面多余的即可。exportHADOOP_COMMON_HOME=/usr/local/src/hadoop-2.7.5exportHADOOP_MAPRED_HOME=/usr/local/src/hadoop-2.7.5exportHIVE_HOME=/usr/local/src/hive2.3.2#保存退出###加入jdbc驱动formysql可以从hive中复制一个过来。cd/usr/local/src/hive2.3.2/libcpmysql-connector-java-5.1.46.jar../../sqoop-1.4.7/lib/#----------------如果忘记了mysql密码,无法登录。一定要注意每行末尾的斜线后面不能再有空格或字符--connectjdbc:mysql://slave3/test#源库--target-dir/sqooptest#目标文件夹--fields-terminated-by','#字段分隔符--tablejos_jf_content#源表--split-byid#分片字段--m2#分几片,即maptask个数'##等待MR执行完成.sqoop的导入数据是没有reduce阶段的。

sqoop 应该算是一个ETL工具,方便的数据导入导出功能。

# Sqoop 用来导出hive数据到mysql的工具
# 下载 sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
cd /usr/local/src
# rz 上传到hadoop主机上
tar zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
mv sqoop-1.4.7.bin__hadoop-2.6.0 sqoop-1.4.7
cd /usr/local/src/sqoop-1.4.7/conf
cp sqoop-env-template.sh sqoop-env.sh
vim sqoop-env.sh
# 小技巧:光标在需要的地方,输入命令 :r!whichhadoop  可以得到hadoop的路径,删除后面多余的即可。
export HADOOP_COMMON_HOME=/usr/local/src/hadoop-2.7.5
export HADOOP_MAPRED_HOME=/usr/local/src/hadoop-2.7.5
export HIVE_HOME=/usr/local/src/hive2.3.2
# 保存退出
### 加入jdbc驱动 formysql 可以从hive中复制一个过来。
cd /usr/local/src/hive2.3.2/lib
cp mysql-connector-java-5.1.46.jar ../../sqoop-1.4.7/lib/
#----------------如果忘记了mysql密码,无法登录。可以先停止服务,
#----------------然后以命令启动 mysqld_safe --skip-grant-tables &
#----------------则可以跳过密码。
## 查看支持的命令:cd /usr/local/src/sqoop-1.4.7/bin     ll 
total 88
-rwxr-xr-x 1 1000 1000 6770 Dec 19 07:00 configure-sqoop
-rwxr-xr-x 1 1000 1000 6533 Dec 19 07:00 configure-sqoop.cmd
-rwxr-xr-x 1 1000 1000 3133 Dec 19 07:00sqoop
-rwxr-xr-x 1 1000 1000 1055 Dec 19 07:00sqoop.cmd
-rwxr-xr-x 1 1000 1000 3060 Dec 19 07:00 sqoop-codegen
-rwxr-xr-x 1 1000 1000 3070 Dec 19 07:00 sqoop-create-hive-table
-rwxr-xr-x 1 1000 1000 3057 Dec 19 07:00 sqoop-eval
-rwxr-xr-x 1 1000 1000 3059 Dec 19 07:00 sqoop-export
-rwxr-xr-x 1 1000 1000 3057 Dec 19 07:00 sqoop-help
-rwxr-xr-x 1 1000 1000 3059 Dec 19 07:00 sqoop-import
-rwxr-xr-x 1 1000 1000 3070 Dec 19 07:00 sqoop-import-all-tables
-rwxr-xr-x 1 1000 1000 3069 Dec 19 07:00 sqoop-import-mainframe
-rwxr-xr-x 1 1000 1000 3056 Dec 19 07:00 sqoop-job
-rwxr-xr-x 1 1000 1000 3067 Dec 19 07:00 sqoop-list-databases
-rwxr-xr-x 1 1000 1000 3064 Dec 19 07:00 sqoop-list-tables
-rwxr-xr-x 1 1000 1000 3058 Dec 19 07:00 sqoop-merge
-rwxr-xr-x 1 1000 1000 3062 Dec 19 07:00 sqoop-metastore
-rwxr-xr-x 1 1000 1000 3060 Dec 19 07:00 sqoop-version
-rwxr-xr-x 1 1000 1000 3987 Dec 19 07:00 start-metastore.sh
-rwxr-xr-x 1 1000 1000 1564 Dec 19 07:00 stop-metastore.sh
## 查看一下用法 
./sqoop-list-databases --help
# 查看目标mysql库
./sqoop-list-databases --connect jdbc:mysql://slave3 --username root --password 123456

# 查看目标mysql中某个表
./sqoop-list-tables --connect jdbc:mysql://localhost/hive --username root --password 123456

#------------------------以上命令执行成功,表示sqoop安装成功-------------------------
#------------------------------mysql to HDFS 示例------------------------------------
./sqoop import 
--connect jdbc:mysql://slave3/test 
--username root 
--password 123456
--target-dir /sqooptest 
--fields-terminated-by ','
--table jos_jf_content 
--split-by id
--m 2
'# 以下是注释: 
# !!!!一定要注意每行末尾的斜线后面不能再有空格或字符
--connect jdbc:mysql://slave3/test  # 源库
--target-dir /sqooptest  # 目标文件夹 
--fields-terminated-by ','# 字段分隔符
--table jos_jf_content # 源表
--split-by id# 分片字段
--m 2# 分几片, 即maptask个数
'
## 等待MR执行完成. sqoop的导入数据是没有reduce阶段的。
# 如果出现了找不到jar包的错误,则检查hadoop中的 mapred-site.xml
# 是否缺少以下配置:
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
#------------------------------mysql to Hive 示例------------------------------------
./sqoop import 
--connect jdbc:mysql://slave3/test 
--username root 
--password 123456
--fields-terminated-by ','
--table banner 
--hive-import 
--m 1
# 同上面的HDFS语句差不多,加上 --hive-import 去掉 --target-dir
# 完成后进入hive的default库查看。
# 1. 如果出现错误:FileAlreadyExistsException: Output directory hdfs://xxxx/user/root/jos_banner already exists
# 则执行hdfs dfs -rm -r /user/root/jos_banner 删除即可。
# 2. 如果出现错误:Could not load org.apache.hadoop.hive.conf.HiveConf.Make sure HIVE_CONF_DIR
# 则在当前用户执行: vim ~/.bash_profile 加入 export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/usr/local/src/hive2.3.2/lib/*
# 再 source ~/.bash_profile  目的也就是加入了hive所在目录所有的库文件路径
# 3. 错误ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")
# 则执行:vim $JAVA_HOME/jre/lib/security/java.policy 增加一行 permission javax.management.MBeanTrustPermission "register"; 
# 4. 错误ERROR exec.DDLTask: java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.ObjectMapper.readerFor(Ljava/lang/Class;)...
# 则可能是jackson版本的不兼容。将$SQOOP_HOME/lib/jackson*.jar 文件bak,再把$HIVE_HOME/lib/jackson*.jar 拷贝至 $SQOOP_HOME/lib 目录中
#------------------------------导入时按条件------------------------------------
sqoop import 
--connect jdbc:mysql://slave3/test 
--username root 
--password 123456 
--where "clicks='1'" 
--fields-terminated-by ',' 
--table banner 
--hive-import 
--m 1
#------------------------------按需导入 ------------------------------------
sqoop import 
--connect jdbc:mysql://slave3/test 
--username root 
--password 123456 
--query 'SELECT id,type,name,clickurl,date FROM `banner` where id >5 and $CONDITIONS' 
--fields-terminated-by '	' 
--target-dir /banner 
--hive-table banner 
--hive-import 
--m 1
#------------------------------增量 导入 ------------------------------------
sqoop import 
--connect jdbc:mysql://slave3/test 
--username root 
--password 123456 
--fields-terminated-by '	' 
--table banner 
--hive-import 
--m 1
--incremental append 
--check-column id 
--last-value 8
############################################### 导出到mysql##############
#--------------hdfs to mysql 需要提前在mysql中创建要接收数据的表。---------
#--------------characterEncoding=utf-8 是为了支持中文--------------------
sqoop export 
--connect "jdbc:mysql://slave3/test?useUnicode=true&characterEncoding=utf-8" 
--username root 
--password 123456 
--input-fields-terminated-by ',' 
--table users 
--export-dir /data/stu_ext 
--m 1
#--------------Hive to mysql 需要提前在mysql中创建要接收数据的表。---------
sqoop export 
--connect "jdbc:mysql://slave3/test?useUnicode=true&characterEncoding=utf-8" 
--username root 
--password 123456 
--input-fields-terminated-by ',' 
--table student 
--export-dir /user/hive/warehouse/test.db/student/ 
--m 1

免责声明:文章转载自《sqoop笔记》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇《微信小程序七日谈》- 第二天:你可能要抛弃原来的响应式开发思维SSH免密远程登陆及详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MySQL复制日常维护与管理

一、复制一些常见设置 1、mysql复制启动时参数: mysql启动时的参数包括:master_host,master_port,master_user,master_password,master_log_file,master_log_pos。这几个参数需要在从库上配置,用来记录需要复制的主数据库的地址、端口、和用户等。mysq复制还包括以下几个常用的...

2-14-1 MySQL基础语句,查询语句

一. SQL概述 结构化查询语言(Structured Query Language)简称SQL 1. 它是一种特殊目的的编程语言 2. 它还是一种数据库查询和程序设计语言 (用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名) 从上可以看出我们数据库相关工作职位大概两种:DBD和DBA SQL 是1986年10 月由美国国家标...

MySql生成随机数

【说明】 mysql生成随机数基层函数使用:RAND() 【函数】 FLOOR(x)返回小于x的最大整数值 RAND()返回0到1内的随机值 【举例】 SELECT FLOOR(RAND()*10); -----------生成随机个位整数...

mysql 服务启动后停止

mysql5.7本地计算机上的mysql 服务启动后停止案例1--errorlog_error.txt未看到如下错误信息--执行mysqld --console或mysqld.exe start,可以看到如下错误提示2020-06-01T15:24:45.286601Z 0 [ERROR] You have enabled the binary log,...

mysql如何解除死锁状态

第一种: 前提条件:找到执行非常慢的sql; 如何找呢:还原客户遇到的问题场景,从控制台找到所执行的sql,一句句的去执行,直到找到执行非常慢的sql 1.查询是否锁表 show OPEN TABLES where In_use > 0; 2.查询进程(如果您有SUPER权限,您可以看到所有线程。否则,您只能看到您自己的线程) show proces...

MySQL 中间件汇总比较

360 Atlas         较为活跃,Atlas 是由 360 Web平台部基础架构团队开发维护的一个基于 MySQL 协议的数据中间层项目。它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。360内部使用 Atlas 运行的 MySQL 务,每天承载的读写请求数达几十亿条。         主要功能: ...