Apache Sqoop
sqoop 装置验证
bin/sqoop list-databases
--connect jdbc:mysql://localhost:3306/
--username root --password hadoop
留意事项:指令带着参数有必要出现在一行中,若换行就意味着主动提交履行,可经过表明未完毕。
全量导入数据到hdfs
mysql的地址尽量不要运用localhost 请运用ip或许host
假如不指定 导入到hdfs默许分隔符是 “,”
能够经过-- fields-terminated-by ' t‘ 指定详细的分隔符
假如表的数据比较大 能够并行发动多个maptask履行导入操作,假如表没有主键,请指定依据哪个字段进行切分
bin/sqoop import
--connect jdbc:mysql://node-1:3306/userdb
--username root
--password hadoop
--target-dir /sqoopresult214
--fields-terminated-by ' '
--split-by id
--table emp --m 2
导入表数据子集(query查询)
运用 query sql 句子来进行查找不能加参数--table ;
而且有必要要添加 where 条件;
而且 where 条件后边有必要带一个$CONDITIONS 这个字符串;
而且这个 sql 句子有必要用单引号,不能用双引号;
增量数据的导入
所谓的增量数据指的是前次至今中心新添加的数据
sqoop支撑两种形式的增量导入
append追加 依据数值类型字段进行追加导入 大于指定的last-value
lastmodified 依据时刻戳类型字段进行追加 大于等于指定的last-value
留意在lastmodified 形式下 还分为两种景象:append merge-key
关于lastmodified 中的两种形式:
append 只会追加增量数据到一个新的文件中 而且会发生数据的重复问题
由于默许是从指定的last-value 大于等于其值的数据开端导入
merge-key 把增量的数据合并到一个文件中 处理追加增量数据之外 假如之前的数据有改变修正
也能够进行修正操作 底层相当于进行了一次完好的mr作业。数据不会重复。
数据导出操作 A8站源码交易平台
留意:导出的方针表需求自己手动提早创立 也便是sqoop并不会帮咱们创立复制表结构
导出有三种形式:
默许形式 方针表是空表 底层把数据一条条insert进去
更新形式 底层是update句子
调用形式 调用存储进程
相关装备参数
导出文件的分隔符 假如不指定 默许以“,”去切开读取数据文件 --input-fields-terminated-by
假如文件的字段次序和表中次序不一致 需求–columns 指定 多个字段之间以","
导出的时分需求指定导出数据的意图 export-dir 和导出到方针的表名或许存储进程名
针对空字符串类型和非字符串类型的转化 “
”
更新导出
updateonly 只更新现已存在的数据 不会履行insert添加新的数据
allowinsert 更新已有的数据 刺进新的数据 底层相当于insert&update