sqoop的数据导入与导出

1. sqoop-import

准备工作

-- 测试数据库的表是否可以连接,显示库中的所有表
bin/sqoop list-tables --connect jdbc:mysql://hadoop10:3306/test --username root --password admins



在Sqoop中,“导入”概念指:从非大数据集群(RDBMS)向大数据集群(HDFS,HIVE,HBASE)中传输数据,叫做:导入,即使用import关键字。

RDBMS -> HDFS

[root@synthesize60 sqoop1.4.6]# bin/sqoop import \
--driver com.mysql.jdbc.Driver \
#         jdbc:mysql://数据库所在机器ip:3306/数据库名?characterEncoding=UTF-8 \ 
--connect jdbc:mysql://192.168.72.1:3306/student?characterEncoding=UTF-8 \ 
--username root \ # 账号
--password root \ # 密码
--table staff \ # 表名
# --columns "id,name" \ # 作用:指定要导入的字段  可无
# --where "id > 2" \ 作用:从关系数据库导入数据时的查询条件  可无
--num-mappers 1 \ # 作用:启动N个map来并行导入数据,默认4个
--fields-terminated-by '\t' \ # 作用:设定每个字段是以什么符号作为结束,默认为逗号   可无
# --query 'select id, name from t_emp where $CONDITIONS LIMIT 3' \ 作用:将查询结果的数据导入,使用时必须伴随参--target-dir,--hive-table,如果查询中有where条件,则条件后必须加上$CONDITIONS关键字    可无
--target-dir /mysql/test/staff \ 作用:指定导入到的HDFS目录路径  注意! 目录不能提前存在
--delete-target-dir # 作用:如果目标目录已存在,则先删除   可无

RDBMS -> Hive

bin/sqoop import \
--connect jdbc:mysql://192.168.72.1:3306/student \
--username root \
--password root \
--table staff \ # 作用:指定关系数据库的表名
--num-mappers 1 \ # 作用:启动N个map来并行导入数据,默认4个
--hive-import \ # 作用:将数据从关系数据库中导入到hive表中
--fields-terminated-by "\t" \
--hive-overwrite \  作用:覆盖掉在hive表中已经存在的数据
--hive-database default \
--hive-table staff  # 后面接要创建的hive表,默认使用MySQL的表名

2. sqoop-export

# 1). HDFS|hive -> RDBMS

bin/sqoop export \ # sqoop的路径 配置环境变量则可 bin/sqoop export \  如果没有配置环境变则使用绝对路径 /opt/installs/sqoop1.4.6/bin/sqoop export \  
--connect jdbc:mysql://192.168.72.1:3306/student \
--username root \
--password root \
--table ads_user_retention_day_rate \
--num-mappers 1 \ # 作用:启动N个map来并行导入数据,默认4个
--update-key stat_date \ # 根据哪个列进行更新(主键)
--update-mode allowinsert \ # 导出模式可选值可以是updateonly或者allowinsert
                            # updateonly仅仅会更新已经存在的记录。
                            # allowinsert既可以添加,也会更新
--export-dir /user/hive/warehouse/gmall.db/ads_user_retention_day_rate \ # 导出的数据对应的hdfs中的文件夹
--input-fields-terminated-by '\t' # 字段分割符号
posted @ 2020-12-17 20:37  花红  阅读(669)  评论(0)    收藏  举报