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