Sqoop安装配置

这篇具有很好参考价值的文章主要介绍了Sqoop安装配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.下载

https://archive.apache.org/dist/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz

2.上传安装包 sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz

注意:sqoop安装包的选择,要选择安装包中含有 bin字符的安装包,否则运行会报错:缺少文件!

使用Xshell工具的xftp插件上传sqoop安装包到usr/local/

3.解压sqoop安装包

#解压安装包
[root@hadoop01 local]#tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
#重命名sqoop目录
[root@hadoop01 local]#mv sqoop-1.4.7 sqoop

4.配置环境变量

#编辑环境变量配置文件
[root@hadoop01 local]#vi /etc/profile
​
#向其中追加以下内容
export SQOOP_HOME=/usr/local/sqoop
export PATH=$PATH:$SQOOP_HOME/bin
​
#重新加载配置文件
[root@hadoop01 local]#source /etc/profile

5.添加 JDBC驱动jar包

#将用于连接mysql的JDBC驱动包添加到sqoop目录下的lib目录中,以下命令从hive中复制而来
[root@hadoop01 local]#cp hive/lib/mysql-connector-java-5.1.49-bin.jar sqoop/lib/

6.修改配置文件

在 Sqoop 安装目录的 conf 子目录下,系统已经提供了一个环境变量文件模板sqoop-env-template.sh,使用 cp 操作复制一个副本,并改名为 sqoop-env.sh,修改sqoop-env.sh (可选,一般安装了Hadoop、HBase、Hive后可不配置此文件)

#修改sqoop运行的环境变量文件sqoop-env.sh
[root@hadoop01 local]#cd sqoop/conf/
[root@hadoop01 conf]#cp sqoop-env.template.sh sqoop-env.sh
[root@hadoop01 conf]#vi sqoop-env.sh
​
#追加以下内容到文件中
export HADOOP_COMMON_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=/usr/local/hadoop
export HIVE_HOME=/usr/local/hive

7.测试 ​

(1)测试Sqoop是否配置成功

[root@hadoop01 conf]#cd
​
#查看sqoop的版本号
[root@hadoop01 ~]#sqoop version
​
#查看sqoop的命令参数
[root@hadoop01 ~]#sqoop help

 (2)修改sqoop启动信息

启动的时候,有相关的警告信息,我们可以配置bin/configure-sqoop 文件,先注销对应的相关语句.

建议:使用notpad++进行编辑,使用其列模式:按住Alt键,垂直拖动鼠标即可以列模式编辑。

#注释掉对应行号 75~107 行的内容
​
#注释掉对应行号 129~147 行的内容
​
#注释掉对应行号 227~228 行的内容
​
#注释掉对应行号 230~231 行的内容

8.sqoop操作

连接对应MySQL数据库

  • 交互式访问

[root@hadoop01 ~]#sqoop list-databases --connect jdbc:mysql://hadoop03:3306 --username root --password 123456
  • 文件授权访问

#生成密码文件,为隐藏文件
[root@hadoop01 ~]#echo -n "123456" > .password
#查看文件
[root@hadoop01 ~]#ls -a
[root@hadoop01 ~]#cat .password
#修改文件访问权限为400
[root@hadoop01 ~]#chmod 400 .password
#将密码文件上传至HDFS
[root@hadoop01 ~]#hdfs dfs -put .password /
​
#使用密码文件访问mysql数据库
[root@hadoop01 ~]#sqoop list-databases --connect jdbc:mysql://hadoop03:3306 --username root --password-file /.password
使用 Sqoop 获取指定 URL 数据库中所有表
[root@hadoop01 ~]#sqoop list-tables --connect jdbc:mysql://hadoop03:3306/mysql?useSSL=false --username root --password 123456
  1. sqoop导入数据

    #使用xshell上传文件EMP.sql
    
    #在安装mysql的节点上登录mysql [root@hadoop03 ~]#mysql -u root -p 123456
    
    #在 MySQL 中新建一个sqoop_db 数据库 mysql>create database sqoop_db; mysql>use sqoop_db;
    
    #导入EMP.sql文件到sqoop_db 数据库中 mysql>source /root/EMP.sql;
    
    #查看数据 mysql>show tables; #查询数据 mysql>select * from EMP;
  2. Import导入对应参数

    通用参数

    --connect <jdbc-url> : 指定JDBC连接串

    --username <username> : 用户名

    --password <password> : 密码

    --password-file: 包含密码的文件

    导入控制参数

    --append :追加数据至已存在的HDFS数据集

    --columns<col,col,col…> :指定导入的列

    -e,--query<statement> :执行SQL语句,查询结果将被导入

    --table<table-name> :读取的表名

    --target-dir<dir> :将导入的HDFS目录,用于单表路径指定

    --warehouse-dir :将导入的HDFS目录,用于多表路径指定

    --where<where express> :条件过滤

    --delete-target-dir :如果目录存在则删除目录

    -m,--num-mappers :导入时并行map任务数量

    -z,--compress :启用压缩

    --mapreduce-job-name<name> :作业名称

    输入格式控制参数

    --input-enclosed-by<char> :设置输入字符包围符

    --input-escaped-by<char> :设置输入转义符

    --input-fields-terminated-by<char> :设置输入字段分隔符

    --input-lines-terminated-by<char> :设置输入行分隔符

    输出格式控制参数

    --fields-terminated-by<char> :设置字段分隔符

    --lines-terminated-by<char> :设置行分隔符

    Hive 参数

    --create-hive-table :自动创建Hive表

    --hive-database<database-name> :设置Hive数据库名

    --hive-import :导入RDBMS表至Hive

    --hive-overwrite :如果数据存在则覆盖

    --hive-partition-key :分区键

    --hive-partition-value :分区值

    --hive-table<table-name> :指定导入Hive的表

    HBase 参数

    --column-family<family> :设置导入的目标列族

    --hbase-create-table :自动创建HBase表

    --hbase-row-key<col> :指定哪一列作为RowKey

    --hbase-table :指定导入的HBase表名

    --hbase-bulkload :启用批量加载

  3. 将mysql中的数据导入到HDFS

[root@hadoop01 ~]#sqoop import --connect jdbc:mysql://hadoop03:3306/sqoop_db?useSSL=false --username root --password 123456 --table EMP -m 1 --columns "EMPNO,ENAME,JOB,SAL,COMM" --target-dir sqoop_emp_column --mapreduce-job-name fromMySQLToHDFS --delete-target-dir
查看导入HDFS的数据
[root@hadoop01 ~]#hdfs dfs -ls /user/root/sqoop_emp_column
[root@hadoop01 ~]#hdfs dfs -text /user/root/sqoop_emp_column/part*

导入表数据并指定压缩格式以及存储格式

[root@hadoop01 ~]#sqoop import --connect jdbc:mysql://hadoop03:3306/sqoop_db?useSSL=false --username root --password 123456 --table EMP -m 1 --target-dir sqoop_emp_parquet --mapreduce-job-name fromMySQLToHDFS --as-parquetfile --compression-codec org.apache.hadoop.io.compress.SnappyCodec --delete-target-dir

--as-parquet :指定导出格式为 Parquet 格式,当然也可指定导出格式为 SequenceFile 等其他格式。

--compression-codec : 指定压缩使用的 codec 编码;因为在 Sqoop 中默认时使用压缩的,所以此次只须指定 codec 编码即可。

使用web方式查看导入HDFS的数据

打开浏览器,输入hadoop01:5007 ,查看sqoop_emp_parquet目录中的数据。

导入表数据并使用指定的分隔符和条件

[root@hadoop01 ~]#sqoop import --connect jdbc:mysql://192.168.242.131:3306/sqoop_db?useSSL=false --username root --password 123456 --table EMP -m 1 --target-dir sqoop_emp_split --mapreduce-job-name fromMySQLToHDFS --fields-terminated-by '\t'  --lines-terminated-by '\n' --where 'sal>2000' --delete-target-dir

--fields-terminated-by :设置字段之间的分隔符

--lines-terminated-by :设置行之间的分隔符

--where :指定 emp 表中满足条件的数

查看导入的数据

[root@hadoop01 ~]#hdfs dfs -ls /user/root/sqoop_emp_split
[root@hadoop01 ~]#hdfs dfs -text /user/root/sqoop_emp_split/part*

导入指定查询语句的数据

[root@hadoop01 ~]#sqoop import --connect jdbc:mysql://hadoop1:3306/sqoop_db?useSSL=false --username root --password 123456 --target-dir sqoop_emp_query
--query 'select * from EMP where sal>2000 and deptno=20 and $CONDITIONS' -m 1
--delete-target-dir

--query :指定查询语句,将查询结果导入到HDFS 中,最后需要添加 AND $CONDITIONS ,这是固定写法。--table 可以省略不写了。

使用 eval 可以执行SQL语句并显示结果

[root@hadoop01 ~]# sqoop eval --connect jdbc:mysql://hadoop1:3306/sqoop_db?useSSL=false --username root --password 123456 --query 'select * from EMP where DEPTNO=10'

注意:查询的结果不会保存在HDFS上

导出mysql中所有的表到HDFS

[root@hadoop01 ~]#sqoop import-all-tables --connect jdbc:mysql://localhost:3306/test?useSSL=false --username root --password 123456 --warehouse-dir /mysql/tables -m 1

 运行Sqoop 脚本以封装 import 操作

上面介绍的Sqoop 的使用方式都是直接运行 Sqoop 脚本,这种方式使用起来比较麻烦。在Sqoop中提供了 --options-file 参数,开发人员可以先将 Sqoop 脚本封装到一个文件中,然后使用 --options-file 参数来指定封装后的脚本并运行,这样可以方便后期的维护。

  • 在 sqoop安装目录下创建一个 sqoop_data\emp.opt 文件,注意:每个参数和值均占单独一行

  • 编写emp.opt文件内容 注意:每个参数和值均占单独一行

import 
--connect jdbc:mysql://hadoop03:3306/sqoop_db?useSSL=false 
--username
root 
--password
123456 
--target-dir
sqoop_emp_options_file
--table
EMP
-m
1
--delete-target-dir
  • 运行脚本文件

[root@hadoop01 sqoop_data]#sqoop --options-file emp.opt

 导入 MySQL 数据到 Hive

将 MySQL数据导入到 Hive 的执行原理:先将 MySQL数据导入到HDFS 上,然后再使用 load 函数将 HDFS 的文件加载到 Hive 表中

注意:需要再 Sqoop\lib 包下加入 Hive 的相关组件包,在hive/lib/目录中的两个jar包:hive-common-1.2.1.jar hive-exec-1.2.1.jar

  • Hive 参数说明:

    --create-hive-table :自动创建Hive表

    --hive-database<database-name> :设置Hive数据库名

    --hive-import :导入RDBMS表至Hive

    --hive-overwrite :如果数据存在则覆盖

    --hive-partition-key :分区键

    --hive-partition-value :分区值

    --hive-table<table-name> :指定导入Hive的表

  • 导入数据到Hive,编写emp1.opt脚本

import 
--connect 
jdbc:mysql://hadoop03:3306/sqoop_db?useSSL=false 
--username
root 
--password
123456 
--target-dir
sqoop_emp_options_file
--table
EMP
-m
1
--delete-target-dir
--hive-import
--create-hive-table
--hive-database
wise_db
--hive-table
emp_import

导出 HDFS 数据到 MySQL 上

在导出数据 (表) 前需要先创建待导出表的结构,如果待导出的表在数据库中不存在,则报错;

如果重复导出表,则表中的数据会重复。

  • sqoop-export

//通用参数
Common arguments:
   --connect <jdbc-uri>                                                               
   --password <password>                                      
   --username <username>                                             
// 导出控制参数
Export control arguments:
   --batch                                                                                              
   --columns <col,col,col...>                                                                                         
   --direct                                                                                                            
   --export-dir <dir>                                                                                                   
   -m,--num-mappers <n>                                                                                                   
   --mapreduce-job-name <name>                                                                                         
   --table <table-name> 
       
// 输入文件参数配置
Input parsing arguments:                                      
   --input-fields-terminated-by <char>      
   --input-lines-terminated-by <char> 
       
// 输出文件参数配置
Output line formatting arguments:                
   --fields-terminated-by <char>      
   --lines-terminated-by <char>
  • 导出 HDFS 数据到 MySQL

#在mysql中创建表结构
mysql>use sqoop_db;
mysql>create table emp_demo as select * from EMP where 1=2;
mysql>select * from emp_demo;
​
#导出HDFS数据到mysql的表emp_demo
[root@hadoop01 ~]#sqoop export --connect jdbc:mysql://hadoop03:3306/sqoop_db?useSSL=false --username root --password 123456 --columns "EMPNO,ENAME,JOB,SAL,COMM,DEPTNO" --table emp_demo --export-dir /user/root/emp -m 1

--export-dir :指出将要导出的数据目录。注意:每运行一次上述代码,就会重新插入数据到MySQL文章来源地址https://www.toymoban.com/news/detail-495353.html

到了这里,关于Sqoop安装配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Sqoop导出hive/hdfs数据到mysql中---大数据之Apache Sqoop工作笔记006

    然后我们看看数据利用sqoop,从hdfs hbase中导出到mysql中去   看看命令可以看到上面这个   这里上面还是mysql的部分,然后看看 下面--num-mappers 这个是指定mapper数 然后下面这个export-dir这里是,指定hdfs中导出数据的目录 比如这里指定的是hive的一个表/user/hive/warehouse/sttaff_hive 然后下

    2024年02月03日
    浏览(43)
  • sqoop入门简介 | 安装部署 | sqoop案例展示

    Sqoop (发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。 Sqoop项目开始于2009年,最早是作

    2024年02月04日
    浏览(42)
  • Windows下安装Sqoop

    1.1、Sqoop是什么 Sqoop是一个用于Hadoop和结构化数据存储(如关系型数据库)之间进行高效传输大批量数据的工具。 它包括以下两个方面: 1.1.1、​可以使用Sqoop将数据从关系型数据库管理系统(如MySql)导入到Hadoop系统(如HDFS、Hive、HBase)中。 1.1.2、将数据从Hadoop系统中抽取并导出

    2024年02月14日
    浏览(33)
  • sqoop详细安装

    本文介绍下Centos7中sqoop的安装(Centos7以下版本中有些命令和centos7中有些不同,安时需注意下自己的linux版本) a、hadoop版本为hadoop-3.3.0 b、软件压缩包存储路径:/export/software/ c、解压后安装包存储路径:/export/server/ Index of /dist/sqoop/1.4.6 1、下载并解压sqoop安装文件至目录/export/serve

    2024年02月08日
    浏览(38)
  • Sqoop的安装和使用

    目录 一.安装 二.导入 1.全量导入 一.MySQL导入HDFS  二.MySQL导入Hive  2.增量导入 一.过滤导入hdfs/hive 二.导出   【CSDN中我的资源包直接下载】  1.下载地址(速度更快) :sqoop下载地址  【官方下载】  2.下载地址(速度更慢):sqoop下载地址  2.解压 3.改名和配置归属权限  4

    2024年02月05日
    浏览(43)
  • [sqoop]hive3.1.2 hadoop3.1.1安装sqoop1.4.7

    Hadoop3.2.4+Hive3.1.2+sqoop1.4.7安装部署_hadoop sqoop安装_alicely07的博客-CSDN博客 sqoop-env.sh 末尾添加 环境变量 先创建目录,解决警告:accumulo does not exist! (1)添加jdbc驱动包:将MySQL数据库的JDBC驱动包mysql-connector-java-5.1.37.jar添加到Sqoop安装目录的lib目录中。 (2)删除Sqoop安装目录的

    2024年02月07日
    浏览(59)
  • 大数据项目实战(Sqoop安装)

    1.sqoop安装 (1)上传安装包   (2)解压安装包 tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /export/servers (3)重命名 mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop  (4)复制cpsqoop-env-template.sh并修改名字为sqoop-env.sh cp sqoop-env-template.sh sqoop-env.sh (5 )修改sqoop-env.sh的配置  (6)修改系统环

    2024年02月11日
    浏览(45)
  • 大数据组件Sqoop-安装与验证

    🥇🥇【大数据学习记录篇】-持续更新中~🥇🥇 个人主页:beixi@ 本文章收录于专栏(点击传送):【大数据学习】 💓💓持续更新中,感谢各位前辈朋友们支持学习~ Sqoop是一个用于在Apache Hadoop和关系型数据库(如MySQL、Oracle等)之间进行数据传输的工具。它提供了简单易用

    2024年02月09日
    浏览(43)
  • 大数据系统开发综合实验(二)Hive_MySQL_Sqoop配置

    目录 一、MySql安装配置 1.1卸载系统中的Mariadb 1.2上传并解压rpm的压缩包 1.3安装Mysql 2.1启动mysql服务 2.2修改mysql密码 2.3修改MySQL默认编码 2.4用户远程登录配置 二、Hive安装配置 1.上传解压hive安装包 2.配置hive-env.sh文件 3.配置MySQL驱动包 #注意,这里要保证三台虚拟机均已启动!!

    2024年03月25日
    浏览(39)
  • 零代码编程:用ChatGPT批量自动下载archive.org上的音频书

    http://archive.org 是一个神奇的网站,可以下载各种古旧的软件、书籍、音频、视频,还可以搜索各个网站的历史网页。 比如说,一些儿童故事音频就可以在http://archive.org下载到,可以用来做英语听力启蒙用。 举个例子,要下载https://archive.org/details/107frogandtoadallyear_202004这个网

    2024年02月08日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包