使用Sqoop连接PostgreSQL时未指定连接参数问题求助
先别慌,这个Accumulo相关的警告完全不影响你连接PostgreSQL以及把表导入HDFS的核心操作!它只是Sqoop在检查可选组件Accumulo的安装路径时,发现找不到对应的目录而已,而你当前的任务根本不需要用到Accumulo这个组件。
下面给你具体的处理方案:
1. 先验证核心功能是否正常
直接忽略这个警告,继续执行你的命令:
sqoop list-tables --connect jdbc:postgresql://<server_name>:5432/aae_data --username my_username -P --verbose
只要你的PostgreSQL连接参数正确(服务器地址、端口、数据库名没错,用户名密码正确),并且已经把PostgreSQL的JDBC驱动包放到了Sqoop的lib目录(比如/opt/cloudera/parcels/CDH-5.9.1-1.cdh5.9.1.p2260.2452/lib/sqoop/lib/),就能正常列出数据库中的表,后续的sqoop import导入到HDFS也能正常工作。
2. 消除警告的两种方法
如果看着这个警告碍眼,想要彻底去掉它,可以选以下两种方式:
临时屏蔽(单次命令生效)
执行Sqoop命令时,临时设置ACCUMULO_HOME环境变量指向一个空路径,比如:
ACCUMULO_HOME=/dev/null sqoop list-tables --connect jdbc:postgresql://<server_name>:5432/aae_data --username my_username -P --verbose
这样Sqoop就不会再去检查Accumulo的安装目录了。
永久消除(所有会话生效)
修改你的bash配置文件,比如~/.bashrc(针对当前用户)或者/etc/profile(针对所有用户),添加一行:
export ACCUMULO_HOME=/dev/null
保存文件后,执行source ~/.bashrc(如果改的是~/.bashrc)让配置立即生效,之后再执行任何Sqoop命令都不会出现这个警告了。
额外注意点
如果执行命令时除了这个警告,还出现了JDBC连接相关的错误,那大概率是PostgreSQL的JDBC驱动没放对位置。你需要把对应版本的postgresql-xxx.jar驱动包复制到Sqoop的lib目录下,再重新尝试连接。
内容的提问来源于stack exchange,提问作者akakak

