1. 程式人生 > >本地搭建hadoop叢集--sqoop的安裝.1.4.7 使用db2

本地搭建hadoop叢集--sqoop的安裝.1.4.7 使用db2

安裝

1、解壓tar包

2、進入conf目錄

3、修改配置檔案

cp -a sqoop-env-template.sh sqoop-env.sh

vm sqoop-env.sh

 

export HADOOP_COMMON_HOME=/opt/module/hadoop-2.7.6
export HADDOP_MAPRED_HOME=//opt/module/hadoop-2.7.6
export HIVE_HOME=/opt/module/apache-hive-2.3.3-bin
export ZOOCFGDIR=/opt/module/zookeeper-3.4.12/conf
export ZOOKEEPER_HOME=/opt/module/zookeeper-3.4.12
 

4、匯入jar包。

rdbms用的啥匯入啥。我用的是db2

所以拷貝3個jar包

db2jcc.jar

db2jcc4.jar

db2jcc_license_cu.jar

 

5、分發檔案

6、命令測試

sqoop list-databases --connect jdbc:db2://10.xxx.xxx.xx:port/xxx --username username--password password

 

打地鼠模式

1、Dorg.apache.sqoop.splitter.allow_text_splitter=true 

ERROR tool.ImportTool: Import failed: java.io.IOException: Generating splits for a textual index column allowed only in case of "-Dorg.apache.sqoop.splitter.allow_text_splitter=true" property passed as a parameter
    at org.apache.sqoop.mapreduce.db.DataDrivenDBInputFormat.getSplits(DataDrivenDBInputFormat.java:204)
    at org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:301)
 
Caused by: Generating splits for a textual index column allowed only in case of "-Dorg.apache.sqoop.splitter.allow_text_splitter=true" property passed as a parameter
    at org.apache.sqoop.mapreduce.db.TextSplitter.split(TextSplitter.java:67)
    at org.apache.sqoop.mapreduce.db.DataDrivenDBInputFormat.getSplits(DataDrivenDBInputFormat.java:201)
    ... 23 more
解決方案:

在 sqoop 指令碼中 當使用--m 處理併發數的時候一定會使用 --split-by

欄位如果是varchar型別則會報錯,因為 sqoop 會 select max 和 min 這個分段欄位 查詢有多少個。然後分配給每個 datanode

最有效的方案是 更換 分組欄位,或者在指令碼上加入這句話

import
-Dorg.apache.sqoop.splitter.allow_text_splitter=true
--connect
jdbc:db2://xx:xx/xx
--username
xxx
--password
xxx
--table
bigdatatest
--split-by
xh
--m
4
--hive-database
yzx
--hive-table
bigdatatest_hive
--hive-overwrite
--hive-import

2、java.lang.ClassNotFoundExcpetion:org.apache.hadoop.hive.conf.HiveConf

make sure HIVE_CONF_DIR is set correctly

網上大部分都是 cdh的 設定 hadoop classpath 目錄

cdh 的lib都在同一個目錄下所以可以解決。

如果不用cdh 或者 hdp 則可以

將hive lib下的 hive-exec-版本.jar 包 copy到 sqoop 的 lib 目錄下即可解決