本期与大家分享的是,小北精心整理的大数据学习笔记,数据采集工具Sqoop 的详细介绍,希望对大家能有帮助,喜欢就给点鼓励吧,记得三连哦!欢迎各位大佬评论区指教讨论!
???制作不易,各位大佬们给点鼓励!
???点赞? ➕ 收藏⭐ ➕ 关注✅
???欢迎各位大佬指教,一键三连走起!
在阿帕奇阁楼(The Apache Attic)中,Sqoop是这样介绍的:(Apache Sqoop mission was the creation and maintenance of software related to Bulk Data Transfer for Apache Hadoop and Structured Datastores.) Apache Sqoop 的任务是创建和维护与 Apache Hadoop 和结构化数据存储的批量数据传输相关的软件。我们可以理解为:Sqoop是将关系数据库(oracle、mysql、postgresql等)数据与hadoop数据进行转换的工具、
Sqoop官网:http://sqoop.apache.org/
Sqoop的版本:
(两个版本完全不兼容,sqoop1使用最多)
sqoop1:1.4.x
sqoop2:1.99.x
与Sqoop同类的产品有 :DataX:阿里顶级数据交换工具
如下图,我们可以看出,Sqoop架构是非常简单的,Sqoop是hadoop生态系统架构中最简单的框架。Sqoop1.4x版本由client端直接接入hadoop,任务通过解析生成对应的maprecue执行。
tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /usr/local/soft/
mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha/ sqoop-1.4.6
# 切换到sqoop配置文件目录cd /usr/local/soft/sqoop-1.4.6/conf# 复制配置文件并重命名cp sqoop-env-template.sh sqoop-env.sh# vim sqoop-env.sh 编辑配置文件,并加入以下内容export HADOOP_COMMON_HOME=/usr/local/soft/hadoop/hadoop-2.7.6export HADOOP_MAPRED_HOME=/usr/local/soft/hadoop/hadoop-2.7.6/share/hadoop/mapreduceexport HBASE_HOME=/usr/local/soft/hbase-1.4.6export HIVE_HOME=/usr/local/soft/hive-1.2.1export ZOOCFGDIR=/usr/local/soft/zookeeper/zookeeper-3.4.6/confexport ZOOKEEPER_HOME=/usr/local/soft/zookeeper/zookeeper-3.4.6# 切换到bin目录cd /usr/local/soft/sqoop-1.4.6/bin# vim configure-sqoop 修改配置文件,注释掉没用的内容(也就是为了去掉警告信息)
vim /etc/profile# 将sqoop的目录加入环境变量export SQOOP_HOME=/usr/local/soft/sqoop-1.4.6export PATH=$SQOOP_HOME/bin
# 添加MySQL连接驱动到$SQOOP_HOME/lib#这里是从HIVE中复制MySQL连接驱动到$SQOOP_HOME/libcp /usr/local/soft/hive-1.2.1/lib/mysql-connector-java-5.1.49.jar /usr/local/soft/sqoop-1.4.6/lib/
# 打印sqoop版本sqoop version
# 测试MySQL连通性sqoop list-databases -connect jdbc:mysql://master:3306?useSSL=false -username root -password 123456
#登录mysql -u root -p123456;#创建create database student;#切换use student
source /root/student.sql;source /root/score.sql;
mysql -u root -p123456 student</root/student.sqlmysql -u root -p123456 student</root/score.sql
mysqldump -u root -p123456 数据库名>任意一个文件名.sql
import--connectjdbc:mysql://master:3306/student?useSSL=false--usernameroot--password123456--tablestudent--m2--split-byage--target-dir/sqoop/data/student1--fields-terminated-by","
sqoop --options-file MySQLToHDFS.conf
1、–m 表示指定生成的Map任务个数,注意,个数不是越多越好,因为MySQL Server的承载能力有限
2、当指定的Map任务个数大于1时,那么就需要结合
--split-by
参数,用于指定分割键,以用来确定每个map任务应该到底读取哪一部分的数据,最好要指定数值型的列,最好指定列为主键(或者是分布均匀的列,这样可以避免每个map任务处理的数据量差别过大)
3、若指定的分割键数据分布不均匀,那么可能会导致数据倾斜问题
4、分割的键最好指定为数值型的列,而且字段的类型为int、bigint这样的数值型
5、编写脚本的时候,注意事项:例如:
--username
参数,参数值不能和参数名同一行
--username root // 错误的// 应该分成两行--usernameroot
6、当运行的时候报错InterruptedException,不用担心,这是hadoop2.7.6自带的问题,忽略它就行
7、Sqoop读取mysql数据实际用的是JDBC的方式,当数据量大的时候,效率不是很高
8、Sqoop底层是通过MapReduce完成数据导入导出的,并且只需要Map任务而不需要Reduce任务
9、每个Map任务会都生成一个文件
先会将MySQL的数据导出来并在HDFS上找个目录临时存放,( 默认为:/user/用户名/ ),然后再将数据加载到Hive中,加载完成后,会将临时存放的目录删除
import --connectjdbc:mysql://master:3306/student?useSSL=false--usernameroot--password123456--tablescore--fields-terminated-by"/t"--lines-terminated-by "/n"--m3--split-bystudent_id--hive-import--hive-overwrite--create-hive-table--hive-databasetestsqoop--hive-tablescore--delete-target-dir
hive> create database testsqoop;
sqoop --options-file MySQLToHIVE.conf
加上这个参数,可以在导出MySQL数据的时候,使用MySQL提供的导出工具mysqldump,可以加快导出速度,提高效率
需要将master上的/usr/bin/mysqldump分发至 node1、node2的/usr/bin目录下
scp /usr/bin/mysqldump node1:/usr/bin/scp /usr/bin/mysqldump node2:/usr/bin/
import --connect jdbc:mysql://master:3306/student --username root --password 123456 --fields-terminated-by "/t" --lines-terminated-by "/n" --m 2 --split-by student_id --e "select * from score where student_id=1500100011 and $CONDITIONS" --target-dir /testQ --hive-import --hive-overwrite --create-hive-table --hive-database testsqoop --hive-table score2
import --connect jdbc:mysql://master:3306/student?useSSL=false--username root --password 123456--table student--hbase-table student--hbase-create-table--hbase-row-key id --m 1--column-family cf1
create "student","cf1"
sqoop --options-file MySQLToHBase.conf
export--connectjdbc:mysql://master:3306/student?useUnicode=true&characterEncoding=UTF-8--usernameroot--password123456--tablestudent-m1--columnsid,name,age,gender,clazz--export-dir/sqoop/data/student1/--fields-terminated-by ","
sqoop --options-file HDFSToMySQL.conf
sqoop help21/04/26 15:50:36 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6usage: sqoop COMMAND [ARGS]Available commands: codegen Generate code to interact with database records create-hive-table Import a table definition into Hive eval Evaluate a SQL statement and display the results export Export an HDFS directory to a database table help List available commands import Import a table from a database to HDFS import-all-tables Import tables from a database to HDFS import-mainframe Import datasets from a mainframe server to HDFS job Work with saved jobs list-databases List available databases on a server list-tables List available tables in a database merge Merge results of incremental imports metastore Run a standalone Sqoop metastore version Display version informationSee "sqoop help COMMAND" for information on a specific command.
# 查看import的详细帮助sqoop import --help
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/121949.html
摘要:大快的大数据通用计算平台,已经集成相同版本号的开发框架的全部组件。,更是集成了大快的大数据一体化开发框架开发框架提供了大数据搜索自然语言处理和人工智能开发中常用的二十多个类,通过总计一百余种方法,实现了倍以上的开发效率的提升。 什么是大数据?进入本世纪以来,尤其是2010年之后,随着互联网特别是移动互联网的发展,数据的增长呈爆炸趋势,已经很难估计全世界的电子设备中存储的数据到底有多少,...
摘要:如果我们可以克服一些数据迁移的挑战,将一个数据仓库以及其数据分析工具从数据中心中的专用服务器转移到基于云的文件系统和数据库就可以解决这个问题。数据迁移工具辅助向云端迁移从数据库抽取数据很容易,从数据库中有效挖掘大容量数据确是一项挑战。 云计算和数据仓库是合理的一对。云存储可以按需扩展,云可以将大量服务器贡献于某一具体任务。数据仓库通用功能是本地数据分析工具,受到计算和存储资源的限制,同时也受...
摘要:如果我们可以克服一些数据迁移的挑战,将一个数据仓库以及其数据分析工具从数据中心中的专用服务器转移到基于云的文件系统和数据库就可以解决这个问题。数据迁移工具辅助向云端迁移从数据库抽取数据很容易,从数据库中有效挖掘大容量数据确是一项挑战。 云计算和数据仓库是合理的一对。云存储可以按需扩展,云可以将大量服务器贡献于某一具体任务。数据仓库通用功能是本地数据分析工具,受到计算和存储 资源的限制,同时也...
阅读 2384·2021-10-09 09:41
阅读 3173·2021-09-26 09:46
阅读 837·2021-09-03 10:34
阅读 3152·2021-08-11 11:22
阅读 3367·2019-08-30 14:12
阅读 713·2019-08-26 11:34
阅读 3347·2019-08-26 11:00
阅读 1752·2019-08-26 10:26