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,并保持转载后文章内容的完整。本人保留所有版权相关权利。