前言
个人目前理解:
sqoop作用就是可以在mysql与hive之间相互抽取、导入。
扩大理解就是 关系型数据库(Mysql、Oracle)等 与 Hadoop(HDFS、Hive、Hbase)之间的桥梁工具。
那么为什么要用hadoop呢?
原因是:
- 1、有价值数据通常存储在关系型数据库当中,但是需要进行聚合、计算等操作等加工才能被使用。
- 2、实际业务场景在关系型数据库是不做这些计算操作,因为会影响业务数据存储或其他抽取需求。
- 3、所以部分数据就通过sqoop抽取到hive中做运算,通过MapReduce程序进行再次加工(MapReduce涉及到sqoop的运算原理)
操作实例
操作流程如下:
hive中创建adventure_ods_hjf→从mysql抽取dim_date_df表到hive当中
1、hive创建adventure_ods_hjf表
进入hive当中,输入以下命令
create database adventure_ods_hjf;
2、查看sqoop的使用方式
在linux的命令行当中(不用进入hive)
sqoop help
对应翻译:
Available commands: (可用命令)
codegen Generate code to interact with database records
(协同) (生成代码以与数据库记录进行交互)
create-hive-table Import a table definition into Hive
(创建hive表) (将表定义导入到Hive中)
eval Evaluate a SQL statement and display the results
(计算) (计算一个SQL语句并显示结果)
export Export an HDFS directory to a database table
(导出) (将HDFS目录导出到数据库表)
help List available commands
(帮助) (罗列可用命令)
import Import a table from a database to HDFS
(导入) (从数据库中导入表到HDFS)
import-all-tables Import tables from a database to HDFS
(导入全部表) (从数据库中导入多表到HDFS)
import-mainframe Import datasets from a mainframe server to HDFS
(导入主机) (从大型机服务器导入数据集到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
(元存储) (运行独立的Sqoop元存储)
version Display version information
(版本) (展现版本信息)
参考命令链接:
https://www.cnblogs.com/alexzhang92/p/10927884.html
尝试查看版本
尝试导入mysql的以下数据dim_date_df
sqoop import \
-connect jdbc:mysql://106.15.121.xxx:3306/datafrog05_adventure \
-username frogdata05 -password xxxxdata'!'123 \
-table dim_date_df \
-hive-import \
-hive-table adventure_ods_hjf.dim_date_df \
-m 1
实际应该一行进行
sqoop import -connect jdbc:mysql://106.15.121.xxx:3306/datafrog05_adventure -username frogdata05 -password xxxdata'!'123 -table dim_date_df -hive-import -hive-table adventure_ods_hjf.dim_date_df -m 1
稍微解释一下:
sqoop import
是调用sqoop的导入
-connect jdbc:mysql……
连接mysql,需要ip/端口号/数据库
-username
、-password
是mysql的账号密码,需要注意,如果是特殊字符如 !,需要用'!'处理
-table table_name
table_name专指mysql的表名
-hive-import
导入hive
-hive-table xxx.xxx
导入到hive中 数据库.数据表(不用建表操作)
-m 1
迁移使用1个进程
检查一下是否导入成功
hive
show databases;
use adventure_ods_hjf;
show tables;
select * from dim_date_df;
导入成功!