sqoop mysql\oracle数据导入到hbase 各种异常解决

使用sqoop 导mysql的数据时 一切顺利很方便  
导oracle的时候 问题就来了 
--query命令: 使用这个命令的时候 需要注意的是 where后面的参数,$CONDITIONS 这个参数必须加上
而且存在单引号与双引号的区别,如果--query后面使用的是双引号 那么需要在$CONDITIONS加上\ 即 \$CONDITIONS
./sqoop import --connect jdbcracle:thin192.168.8.130:1521:dcshdev --username User_data2 --password yhdtest123qa --query "select * from so_ext t where \$CONDITIONS " -m 4 --hbase-create-table --hbase-table hso --column-family so --hbase-row-key id --split-by id
如果使用--columns指令来指定字段 也出现了问题 
因为在一行中写太多命令是不可能的,--columns 如果字段太多在命令中写也不方便 
所以使用shell脚本要方便的多
那么在脚本中换行使用 \  来换行

有个问题就是 使用--columns 指定的字段大小写要注意 得使用小写。
如果使用大写 导数据不会有异常 会成功的,hbase中表也会创建好,但是scan的时候 你会发现没有数据 这个蛋疼吧
--columns id,order_id,order_code
而且每个字段之间用逗号分隔,但是不能有空格,在sqoop中没有处理空格,如果在这个命令后的参数有空格的话
就不能和oracle表中的字段对应上了 结果虽然没有错误能够显示成功导入多了条数据,但是scan的时候 会是0条数据

关于导mysql和oracle的时候 还有个区别:
导mysql表的数据时 不需要指定太多的命令就可以成功导入,但是oracle就需要很多命令 ,如--split-by 这个切分参数
在导mysql的时候 就不需要 ,但是如果在导oracle的时候 不加上就会出错了 不信你试试

0 个评论

要回复文章请先登录注册