大数据平台和MySQL之间的数据导出和导入

数据的导出和导入都是针对大数据平台(HDFS,Hive,HBase)来定义的
数据从MySQL到大数据平台----------数据导入
数据从大数据平台到MySQL-----------数据导出

一、数据导出(大数据平台---->Mysql)

1.导出 HDFS数据到MySQL

sqoop export \
--connect jdbc:mysql://qyl01:3306/sqoopdb \
--username root \
--password root \
--table sqoopstudent \

注意事项:
1)要在在mysql中创建sqoopdb数据库,
2)在sqoopdb中创建sqoopstudent的表,表中的字段与hdfs分割的字段一样
–export-dir /sqoopdata
3)指定要把那个目录下的文件导出
–fields-terminated-by ‘,’
4)指定分隔符
Export 常用参数:
export 主要参数
–direct 快速导入
–export-dir HDFS 到处数据的目录
-m,–num-mappers 都少个 map 线程
–table 导出哪个表
–call 存储过程
–update-key 通过哪个字段来判断更新
–update-mode 插入模式,默认是只更新,可以设置为 allowinsert.
–input-null-string 字符类型 null 处理
–input-null-non-string 非字符类型 null 处理
–staging-table 临时表
–clear-staging-table 清空临时表
–batch 批量模式

2.导出 HIVE 数据到 MySQL
/user/hive/warehouse/test.db/course hive文件路径

sqoop export \
--connect jdbc:mysql://qyl01:3306/sqoopdb \
--username root \
--password root \
--table course \
--export-dir /user/hive/warehouse/test.db/course \

指定要导出hive表的文件路径
–input-fields-terminated-by ‘,’
指定分隔符。
基本步骤和HDFS一样。

3.导出 HBase数据到 MySQL
很遗憾,现在还没有直接的命令将 HBase 的数据导出到 MySQL
一般采用如下 3 种方法:
1、将 Hbase 数据,扁平化成 HDFS 文件,然后再由 sqoop 导入
2、将 Hbase 数据导入 Hive 表中,然后再导入 mysql
3、直接使用 Hbase 的 Java API 读取表数据,直接向 mysql 导入,不需要使用 sqoop

二、数据导入(Mysql------>大数据平台)

常用参数:
–connect jdbc 连接地址
–connection-manager 连接管理者
–driver 驱动类
–hadoop-mapred-home $HADOOP_MAPRED_HOME
–help help 信息
-P 从命令行输入密码
–password 密码
–username 账号
–verbose 打印流程信息
–connection-param-file 可选参数
1.导入 MySQL 数据到 HDFS
1)普通导出

  sqoop import \
--connect jdbc:mysql://qyl01:3306/mysql \
--username root \
--password root \
--table help_keyword \
 -m 1

默认导出到/user/qyl/目录下 可以通过命令进行查看:

hadoop fs -cat /user/qyl/help_keyword/part-m-00000

2) 指定分隔符和导入路径
–target-dir 指定目录
–fields-terminated-by '\t 指定分隔符

sqoop import \
--connect jdbc:mysql://qyl:3306/mysql \  mysql数据库
--username root \
--password root \
--table help_keyword \  数据库中的表
--target-dir /user/my_help_keyword \  导入到HDFS中的路径
--fields-terminated-by '\t' \    指定分隔符
 -m 1

3)导入 where 条件数据
–where where 子句的语法

sqoop import \
--connect jdbc:mysql://qyl01:3306/mysql \
--username root \
--password root \
--where "name='STRING' " \
--table help_keyword \
--target-dir /test\
这个路径一定不能存在
 -m 1

2.导入 MySQL 数据到 HIVE
1)普通导入
Sqoop 导入关系型数据到 hive 的过程是先导入到 hdfs,然后再 load 进入 hive。
example1:

sqoop import \
--connect jdbc:mysql://qyl01:3306/mysql \
--username root \
--password root \
--table help_keyword \
--hive-import \
指定hive的导出
-m 1

example2:

sqoop import \
--connect jdbc:mysql://qyl01:3306/mysql \
--username root \
--password root \
--table help_keyword \
--fields-terminated-by "\t" \
--lines-terminated-by "\n" \
--hive-import \
--hive-overwrite \
--create-hive-table \
--hive-table test.new_help_keyword \
--delete-target-dir

注意:表会自动创建,但是库不会。所以在执行该语句之前,一定要确保 hive 的数据库test是存在的,否则程序会报错

2)增量导入
增量导入是仅导入表中新添加的行的技术。
它需要添加 ‘incremental’ , ‘check-column’, 和 ‘last-value’ 选项来执行增量导入。

sqoop import \
--connect jdbc:mysql://hadoop02:3306/mysql \
--username root \
--password root \
--table help_keyword \
--target-dir /user/hadoop/myimport3 \
--incremental append \     指定递增
--check-column help_keyword_id \    增加的列
--last-value 500 \     从500开始
-m 1

2.导入 MySQL 数据到 HBASE

sqoop import \
--connect jdbc:mysql://qyl01:3306/mysql \
--username root \
--password root \
--table help_keyword \
--hbase-table new_help_keyword \
--column-family person \
--hbase-row-key help_keyword_id

字段解释:
–connect jdbc:mysql://hadoop04:3306/mysql 表示远程或者本地 Mysql 服务的 URI
–hbase-create-table 表示在 HBase 中建立表。
–hbase-table new_help_keyword 表示在 HBase 中建立表 new_help_keyword。
–hbase-row-key help_keyword_id 表示hbase表的rowkey是mysql表的help_keyword_id
字段。
–column-family person 表示在表 new_help_keyword 中建立列族 person。
–username ‘root’ 表示使用用户 root 连接 mysql。
–password ‘root’ 连接 mysql 的用户密码
–table help_keyword 表示导出 mysql 数据库的 help_keyword 表

猜你喜欢

转载自blog.csdn.net/weixin_43823423/article/details/85096862
今日推荐