sqoop自定義分隔符


如題,sqoop1.4.*版本中分隔符只能為一個字符,並不能滿足實際開發中的一些需求,下面討論如何自定義分隔符!

首先說明,本人在研究過程中借鑒了http://www.cnblogs.com/YFYkuner/p/3748495.html!

步驟如下:

1.修改sqoop生成的java文件,僅修改一行代碼即可,char fieldDelim = delimiters.getFieldsTerminatedBy();替換為String fieldDelim = "!@#";

2.重新編譯,hadoop1.*編譯請移步上面的鏈接,這里主要說hadoop2.*的編譯,其實步驟都差不多,差別僅在於1.*有hadoop-core.jar,而2.*將其打散了,廢話不多說,編譯sqoop生成的java需要以下幾個包

hadoop-common-2.6.0.jar、hadoop-annotations-2.6.0.jar、hadoop-mapreduce-client-core-2.6.0.jar

具體步驟如下:

javac -cp ./:$HADOOP_HOME/share/hadoop/httpfs/tomcat/webapps/webhdfs/WEB-INF/lib/hadoop-common-2.6.0.jar:$HADOOP_HOME/share/hadoop/httpfs/tomcat/webapps/webhdfs/WEB-INF/lib/hadoop-annotations-2.6.0.jar:$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.6.0.jar:$SQOOP_HOME/sqoop-1.4.4-cdh5.1.0.jar TB_INSURANCE_PLEDGE.java

jar -cf TEST.jar TEST.class

sqoop import --connect jdbc:oracle:thin:@192.168.1.*:1521:orcl --username * --password *--verbose -m 1 --table TEST --jar-file /tmp/sqoop-hadoop/compile/a76a03a2aa1f403f660bf1e180f9317e/TEST.jar --class-name TEST --target-dir /user/sqoop/TEST

 

sqoop import --connect jdbc:XXX/testdb --username user --password password --table test_table --split-by id --jar-file /path/test_table.jar --class-name test_table


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM