sqoop 从 MySQL 导入数据到 hdfs 中

MYSQL 数据导入到 HDFS

sqoop import 
--connect jdbc:mysql://192.168.66.4:3306/networkmanagement \
--username sendi \
--password 1234 \
--table people \
--columns "name,age" \
--where "age>18" \
--target-dir hdfsPeople \
--delete-target-dir \
-m 1
  • –table 是要导入HDFS中的表
  • –columns 选择要导入的列,这里选择把name与age两列导入的HDFS中。
  • –where 对数据进行过滤,只有满足条件的才保存到HDFS中。
  • –target-dri 指定存储在HDFS上的表名
  • –delete-target-dir 表示如果HDFS表存在,则把他删除。
  • -m 说明使用多少个map进行数据迁移,如果表比较大的话,建议使用多个map,默认的map为4个

从 HDFS 导出到 MYSQL

1、首先先在MySQL中创建表
2、重复的记录要删除
2、export path 指定导出的目录
4、–updata-key

#### 在 mysql 下创建表

create table customertest(id int,name varchar(20),last_mod timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);

执行导出语句

sqoop import 
--connect jdbc:mysql://192.168.66.4:3306/networkmanagement?useUnicode=true&characterEncoding=utf-8" \
--username sendi \
--password 1234 \
--table people \
--columns "id,name" \
--input-fields-terminated-by ',' \
--export-dir path \
-m 1
  • columns 指定导出到 mysql 中的列

更新数据

  • –updata-key
  • –update-mode allowinsert 指定更新的模式为可插入,默认为 updateonly

分隔符

  • input-fields-terminated-by hdfs文件分隔符

当数据库中字符为空时的处理

  • –input-null-non-string ‘0’ 当不是字符串的数据为空的时候,用 0 替换
  • –input-null-string ‘string’ 当字符串为空的时候,使用string 字符替换

你可能感兴趣的:(java,开发总结,大数据,sqoop)