Sqoop 使用小结
sqoop是将数据从sql导到hadoop的工具,当然也支持部分hadoop到sql。具体的机制不讲了。这里记录一下用法。
sqoop常用命令有这样一些
  | 
  | 
import
将数据从sql导入HDFS/HBase。一个导入hdfs的例子
  | 
  | 
- connect:jdbc连接字符
 - table:要导入的table
 - m:mapper数量
 - target-dir: hdfs文件地址
 - columns 要导入的列
 - where: 可以用来filter
 - fields-terminated-by hdfs中的分隔符
 
导入hbase
  | 
  | 
- databaseName 和datatable 是mysql的数据库和表名,
 - hbase_tablename是要导成hbase的表名,
 - key_col_name可以指定datatable中哪一列作为hbase新表的rowkey
 - col_fam_name是除rowkey之外的所有列的列族名
 - split-by 这个应该是按照什么分
 
导入hive
自动创建hive table
  | 
  | 
创建并导入hive
  | 
  | 
可以加–query执行一条query。
至于反向导入,一般用export
merge
将两个数据集合并的工具,对于相同的key会覆盖老的值。
- –class-name 
指定merge job使用的类名称  - –jar-file 
合并时引入的jar包,该jar包是通过Codegen工具生成的jar包  - –merge-key 
指定作为merge key的列名  - –new-data 
指定newer数据目录  - –onto 
指定older数据目录  - –target-dir 
指定目标输出目录  
eval
用户可以很快的使用sql语句对数据库进行操作。这使得用户在执行import操作之前检查sql语句是否正确。
job
用来生成sqoop任务。存在sqoop的metastore中,之后可以直接用job-id运行:
- –create 
创业一个新的sqoop作业.  - –delete 
删除一个sqoop job  - –exec 
执行一个 –create保存的作业  - –show 
显示一个作业的参数  - –list 显示所有创建的sqoop作业
 
一个例子:
  | 
  | 
job提供了一个增量导入的机制,主要是这样三个参数:
- –check-column (col):指定一个“标志列”用于判断增量导入的数据范围,该列不能是字符型,最好是数字或者日期型
 - –incremental (mode):指定增量模式,包含“追加模式” append 和“最后修改模式” lastmodified (该模式更满足常见需求)。
 - –last-value (value):指定“标志列”上次导入的上界。如果“标志列”是最后修改时间,则–last-value为上次执行导入脚本的时间。
 
当incremental时lastmodified时,每次运行后会自动记录last-value。这个在业务中非常实用。
参考文献
本文采用创作共用保留署名-非商业-禁止演绎4.0国际许可证,欢迎转载,但转载请注明来自http://thousandhu.github.io,并保持转载后文章内容的完整。本人保留所有版权相关权利。