本地搭建hadoop集群--sqoop的安装.1.4.7 使用db2

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_18730505/article/details/81285649

安装

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 目录下即可解决

猜你喜欢

转载自blog.csdn.net/qq_18730505/article/details/81285649