|||
使用sqoop抽取GreenPlum数据或者oracle数据到hive时报错如下,仔细看一下报错即可看到提示是metadata元数据的问题,但是当时考虑到在mysql中hive的元数据库以及表都有,所以没有进去查看表数据是否正确,下面写一下处理问题时的思路:
从以下几点出发考虑
1.sqoop本身问题
2.hive本身问题
3.sqoop跟hive连接问题
测试sqoop本身有没有问题
最直接的方法,使用sqoop命令行进行查询、抽取数据,例:
sqoop list-tables --connect jdbc:postgresql://IP:port/db --user
该指令可以执行,初步排除sqoop本身问题。
2.测试hive本身问题
进入hive进行最基本的 show databases;show tables;select 以及create table操作:
结果在create table的时候报错如下,而且hdfs的端口号出现两次,明显有问题,
先看一下hdfs上数据文件有没有问题
hadoop fs -ls hdfs://htxx1:8020/user/hive/warehouse,显示正常。
查看hive相关的配置文件,比如/etc/hive/conf.cloudera.hive/core-site.xml,看元数据配置项中有没有将端口重复书写的情况。看了下也正常。
查看mysql中元数据表中内容是否正确,之前只看了元数据库以及表都在,没有确认表数据正确性,
在mysql中hive的元数据库:select * from DBS;结果如下:
奈斯,找到了问题所在,可以使用navicate连接mysql对数据进行修改。
3.再使用sqoop1.4.5抽取数据到hive,仍旧报之前的错,改成使用sqoop1.4.6之后可以正常抽取,应该是部署的问题,使用sqoop1.4.5不能正常抽取,此部分有待研究。