概述
Sqoop实用指南
- Sqoop简介
- Sqoop安装指南
- 1、下载Sqoop安装包、配置环境变量
- 2、重命名配置文件
- 3、修改sqoop.env.sh
- Sqoop使用指南
- 4、把mysql的数据导入hdfs中
- 5、把hdfs中的数据导入到mysql中
- 6、列出mysql数据库中的所有数据库
- 7、连接mysql并列出数据库中的表
- 8、将关系型数据的表结构复制到hive中
- 9、将数据从关系数据库导入文件到hive表中
- 10、将hive中的表数据导入到mysql数据库表中
- 11、将数据从关系数据库导入文件到hive表中,--query 语句使用
- 12、将数据从关系数据库导入文件到hive表中,--columns --where 语句使用
Sqoop简介
Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。此外,对于某些NoSQL数据库它也提供了连接器。Sqoop类似于其他ETL工具,使用元数据模型来判断数据类型并在数据从数据源转移到Hadoop时确保类型安全的数据处理。Sqoop专为大数据批量传输设计,能够分割数据集并创建Hadoop任务来处理每个区块。
Sqoop安装指南
1、下载Sqoop安装包、配置环境变量
本文使用的版本是sqoop-1.4.3.bin__hadoop-1.0.0.tar.gz
,可以点击这里下载,安装在/usr/local目录下。
首先就是解压缩,重命名为sqoop,然后在文件/etc/profile中设置环境变量SQOOP_HOME。
把mysql的jdbc驱动mysql-connector-java-5.1.49.jar复制到sqoop项目的lib目录下。
2、重命名配置文件
在${SQOOP_HOME}/conf中执行命令
mv sqoop-env-template.sh sqoop-env.sh
在conf目录下,有两个文件sqoop-site.xml和sqoop-site-template.xml内容是完全一样的,不必在意,我们只关心sqoop-site.xml即可。
3、修改sqoop.env.sh
内容如下:
#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/usr/local/hadoop/
#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/usr/local/hadoop
#set the path to where bin/hbase is available
export HBASE_HOME=/usr/local/hbase
#Set the path to where bin/hive is available
export HIVE_HOME=/usr/local/hive
#Set the path for where zookeper config dir is
export ZOOCFGDIR=/usr/local/zk
Sqoop使用指南
4、把mysql的数据导入hdfs中
在mysql中数据库webdemo中有一张表是acct_user,表中的数据如下图所示
现在我们要做的是把acct_user中的数据导入到hdfs中,执行命令如下:
sqoop import
--connect jdbc:mysql://192.168.126.10:3306/webdemo
--username root
--password admin
--query "SELECT * FROM acct_user WHERE $CONDITIONS AND id='1'" -m 1
--target-dir /sqoop/test2
5、把hdfs中的数据导入到mysql中
把上一步导入到hdfs的数据导出到mysql中。我们已知该文件有两个字段,使用制表符分隔的。那么,我们现在数据库test中创建一个数据表叫做bb,里面有两个字段。然后执行下面的命令
sqoop export
--connect jdbc:mysql://192.168.126.10:3306/webdemo
--username root
--password admin
--table acct_user2
--export-dir /sqoop/test
--input-fields-terminated-by 't'
6、列出mysql数据库中的所有数据库
sqoop list-databases
--connect jdbc:mysql://localhost:3306/ -username root -password admin
7、连接mysql并列出数据库中的表
sqoop list-tables
--connect jdbc:mysql://localhost:3306/test --username root --password admin
8、将关系型数据的表结构复制到hive中
sqoop create-hive-table
--connect jdbc:mysql://192.168.126.10:3306/webdemo
--table acct_user
--username root
--password admin
--hive-table acct_user
--fields-terminated-by "t"
--lines-terminated-by "n";
参数说明:
-
fields-terminated-by “t” 是设置每列之间的分隔符,它是hive的默认行内分隔符, 而sqoop的默认行内分隔符为","
-
lines-terminated-by “n” 设置的是每行之间的分隔符,此处为换行符,也是默认的分隔符;
注意:只是复制表的结构,表中的数据并没有复制
9、将数据从关系数据库导入文件到hive表中
sqoop import
--connect jdbc:mysql://192.168.126.10:3306/webdemo
--username root
--password admin
--table acct_user
--hive-import
--hive-table acct_user -m 2
--fields-terminated-by "t";
参数说明:
-
m 2 表示由两个map作业执行;
-
fields-terminated-by “t” 需同创建hive表时保持一致;
10、将hive中的表数据导入到mysql数据库表中
sqoop export
--connect jdbc:mysql://192.168.126.10:3306/webdemo
--username root
--password admin
--table acct_user2
--export-dir /user/hive/warehouse/acct_user/part-m-00000
--input-fields-terminated-by 't'
注意:
-
在进行导入之前,mysql中的表userst必须已经提起创建好了。
-
jdbc:mysql://192.168.126.10:3306/test中的IP地址改成localhost会报异常,
11、将数据从关系数据库导入文件到hive表中,–query 语句使用
sqoop import
--append
--connect jdbc:mysql://192.168.126.10:3306/webdemo
--username root
--password admin
--query "select id,email from acct_user2 where $CONDITIONS AND id='1'" -m 1
--target-dir /user/hive/warehouse/acct_user
--fields-terminated-by "t";
12、将数据从关系数据库导入文件到hive表中,–columns --where 语句使用
sqoop import
--append
--connect jdbc:mysql://192.168.126.10:3306/webdemo
--username root
--password admin
--table acct_user -columns "id,name"
--where "id > 0 and (name = 'User' or name = 'Admin')" -m 1
--target-dir /user/hive/warehouse/acct_user
--fields-terminated-by "t";
最后
以上就是明亮钢笔为你收集整理的Sqoop实用指南的全部内容,希望文章能够帮你解决Sqoop实用指南所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复