底层

底层用到是单个map,所以要先启动yarn

常用参数

sqoop 导入常用参数:

  1. bin/sqoop import
  2. ------------------------------公有参数-----------------------------------
  3. --connect 指定mysql url连接
  4. --username 指定mysql账号
  5. --password 指定mysql的密码
  6. -------------------------------导入HDFS的时候使用---------------------------
  7. --append 追加数据到HDFS
  8. --as-textfile 将数据以文本格式保存在HDFS
  9. --as-parquetfile 将数据以parquet文件格式保存在HDFS--columns 指定从mysql导出哪些列的数据到HDFS
  10. --delete-target-dir 指定导入数据之前先删除目标路径
  11. --num-mappers[-m] 指定maptask的个数,这多maptask并行从mysql导数据
  12. --split-by 指定数据切分的依据字段
  13. --query[-e] 通过sql语句指定从mysql导哪些数据 [select 字段,... from 表名 where ...and \$CONDITIONS\ (加了Conditions后面的多个map才能平均切分)]
  14. --where 指定导入mysql指定条件的数据
  15. --table 指定导mysql哪个表的数据
  16. --columns 指定从mysql导出哪些列的数据到HDFS
  17. --target-dir 指定数据存储在HDFS的路径
  18. --compress[-z] 指定数据导入HDFS的时候是否压缩
  19. --compression-codec 指定数据保存在HDFS的时候压缩格式
  20. --null-string 指定mysql字符串列值如果为null的时候导入HDFS以哪种格式保存
  21. --null-non-string 指定mysql非字符串列值如果为null的时候导入HDFS以哪种格式保存
  22. --fields-terminated-by 指定数据保存在HDFS的时候列之间的分隔符
  23. --lines-terminated-by 指定数据保存在HDFS的时候行之间的分隔符
  24. -------------------------------------增量导入------------------------------
  25. --check-column 指定通过哪个字段判断数据为新增/修改数据
  26. --incremental append[只导mysql每天新增的数据]/lastmodified[导入新增和修改的数据]
  27. --last-value 指定通过哪个值判断数据为新增/修改的数据
  28. ------------------------------------数据导入HIVE--------------------------
  29. --hive-import 指定数据导入HIVE
  30. --hive-table 指定数据导入hive哪个表
  31. --create-hive-table 如果hive表不存在可以自动创建
  32. --hive-overwrite 指定数据导入hive的时候直接覆盖hive数据
  33. --hive-partition-key 指定数据导入hive分区表的时候分区字段名是什么
  34. --hive-partition-value 指定数据导入hive分区表的时候分区字段的值是什么

示例

  1. bin/sqoop import --connect jdbc:mysql://hadoop102:3306/gmall \
  2. --username root \
  3. --password root123 \
  4. --as-textfile \
  5. --delete-target-dir \
  6. --num-mappers 4 \
  7. --split-by id \
  8. --query "select * from user_info where id<=100 and \$CONDITIONS" \
  9. --target-dir hdfs://hadoop102:8020/user_info \
  10. --null-string '\\N' \
  11. --null-non-string '\\N' \
  12. --fields-terminated-by ,

sqoop 导出常用参数:

  1. bin/sqoop export
  2. ------------------------------公有参数-----------------------------------
  3. --connect 指定mysql url连接
  4. --username 指定mysql账号
  5. --password 指定mysql的密码
  6. --columns 指定数据导入到mysql哪些列中
  7. --export-dir 指定HDFS数据路径
  8. --num-mappers[-m] 指定maptask个数
  9. --table 指定数据导入到mysql哪个表
  10. --update-key 指定HDFS导入数据到mysql的时候,通过哪个字段判断HDFSmysql的数据是同一条数
  11. --update-mode updateonly[如果update-key的数据在mysql中已经存在则更新,不存在则忽略]/allowinsert[如果update-key的数据在mysql中已经存在则更新,不存在则插入]
  12. --input-null-string 指定HDFS字符串数据如果为null,保存在mysql的时候以哪种形式保存
  13. --input-null-non-string 指定HDFS非字符串数据如果为null,保存在mysql的时候以哪种形式保存
  14. --input-fields-terminated-by 指定HDFS中数据字段之间的分隔符
  15. --input-lines-terminated-by 指定HDFS中数据行之间的分隔符

示例

  1. bin/sqoop export \
  2. --connect jdbc:mysql://hadoop102:3306/test \
  3. --username root \
  4. --password root123 \
  5. --columns id,name,age \
  6. --export-dir hdfs://hadoop102:8020/input \
  7. --num-mappers 1 \
  8. --table user_info \
  9. --update-key id \
  10. --update-mode allowinsert \
  11. --input-null-string "null" \
  12. --input-null-non-string "null" \
  13. --input-fields-terminated-by ,