sqoop mysql\oracle數(shù)據(jù)導入到hbase 各種異常解決 --columns指定字段 細節(jié)注意
Posted on 2012-05-28 17:05 云云 閱讀(9339) 評論(4) 編輯 收藏最近使用sqoop把數(shù)據(jù)從oracle導入到hbase 遇到各種問題 耗了很多時間
遇到的異常在網(wǎng)上也沒找到過先例 可能有朋友也遇到了這樣的問題
整理一下 留在這里 歡迎拍磚 看到的朋友 如果有更好的方法 可以回復 一起學習
使用sqoop 導mysql的數(shù)據(jù)時 一切順利很方便
導oracle的時候 問題就來了
--query命令: 使用這個命令的時候 需要注意的是 where后面的參數(shù),$CONDITIONS 這個參數(shù)必須加上
而且存在單引號與雙引號的區(qū)別,如果--query后面使用的是雙引號 那么需要在$CONDITIONS加上\ 即 \$CONDITIONS
因為在一行中寫太多命令是不可能的,--columns 如果字段太多在命令中寫也不方便
所以使用shell腳本要方便的多
那么在腳本中換行使用 \ 來換行
有個問題就是 使用--columns 指定的字段大小寫要注意 得使用小寫。
如果使用大寫 導數(shù)據(jù)不會有異常 會成功的,hbase中表也會創(chuàng)建好,但是scan的時候 你會發(fā)現(xiàn)沒有數(shù)據(jù) 這個蛋疼吧
--columns id,order_id,order_code
而且每個字段之間用逗號分隔,但是不能有空格,在sqoop中沒有處理空格,如果在這個命令后的參數(shù)有空格的話
就不能和oracle表中的字段對應上了 結(jié)果雖然沒有錯誤能夠顯示成功導入多了條數(shù)據(jù),但是scan的時候 會是0條數(shù)據(jù)
關于導mysql和oracle的時候 還有個區(qū)別:
導mysql表的數(shù)據(jù)時 不需要指定太多的命令就可以成功導入,但是oracle就需要很多命令 ,如--split-by 這個切分參數(shù)
在導mysql的時候 就不需要 ,但是如果在導oracle的時候 不加上就會出錯了 不信你試試
遇到的異常在網(wǎng)上也沒找到過先例 可能有朋友也遇到了這樣的問題
整理一下 留在這里 歡迎拍磚 看到的朋友 如果有更好的方法 可以回復 一起學習
使用sqoop 導mysql的數(shù)據(jù)時 一切順利很方便
導oracle的時候 問題就來了
--query命令: 使用這個命令的時候 需要注意的是 where后面的參數(shù),$CONDITIONS 這個參數(shù)必須加上
而且存在單引號與雙引號的區(qū)別,如果--query后面使用的是雙引號 那么需要在$CONDITIONS加上\ 即 \$CONDITIONS
./sqoop import --connect jdbc:oracle:thin:@192.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 如果字段太多在命令中寫也不方便
所以使用shell腳本要方便的多
那么在腳本中換行使用 \ 來換行
有個問題就是 使用--columns 指定的字段大小寫要注意 得使用小寫。
如果使用大寫 導數(shù)據(jù)不會有異常 會成功的,hbase中表也會創(chuàng)建好,但是scan的時候 你會發(fā)現(xiàn)沒有數(shù)據(jù) 這個蛋疼吧
--columns id,order_id,order_code
而且每個字段之間用逗號分隔,但是不能有空格,在sqoop中沒有處理空格,如果在這個命令后的參數(shù)有空格的話
就不能和oracle表中的字段對應上了 結(jié)果雖然沒有錯誤能夠顯示成功導入多了條數(shù)據(jù),但是scan的時候 會是0條數(shù)據(jù)
關于導mysql和oracle的時候 還有個區(qū)別:
導mysql表的數(shù)據(jù)時 不需要指定太多的命令就可以成功導入,但是oracle就需要很多命令 ,如--split-by 這個切分參數(shù)
在導mysql的時候 就不需要 ,但是如果在導oracle的時候 不加上就會出錯了 不信你試試