我在本地机器上安装了Sqoop。以下是配置信息。
Bash.bashrc:
export HADOOP_HOME=/home/hduser/hadoop
export HBASE_HOME=/home/hduser/hbase
export HIVE_HOME=/home/hduser/hive
export HCAT_HOME=/home/hduser/hive/hcatalog
export SQOOP_HOME=/home/hduser/sqoop
export PATH=$PATH:$HIVE_HOME/bin
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HBASE_HOME/bin
export PATH=$PATH:$SQOOP_HOME/bin
export PATH=$PATH:$HCAT_HOME/bin
Hadoop的:
Version: Hadoop 1.0.3
蜂巢:
Version: hive 0.11.0
Mysql Connector驱动程序
version: mysql-connector-java-5.1.29
"The driver is copied to the lib folder of sqoop"
Sqoop:
version: sqoop 1.4.4
完成所有安装后,我在名为practice_1的mysql中创建了一个表,但是当我运行load命令将数据从mysql加载到hdfs时,该命令会引发异常:
ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.RuntimeException: Could not load db driver class: com.mysql.jdbc.Driver
Coud有人请指导我可能出现的问题。
答案 0 :(得分:13)
你需要在SQOOP'中使用数据库驱动程序。 classpath check this 它有关于SQOOP'
的精彩解释SQOOP还有其他选项,例如
Ex: - driver com.microsoft.jdbc.sqlserver.SQLServerDriver -libjars ="。* jar"
来自here
您可以将Sqoop与任何其他符合JDBC的数据库一起使用。首先,为要导入的数据库类型下载相应的JDBC驱动程序,然后将.jar文件安装在客户端计算机上的$ SQOOP_HOME / lib目录中。 (如果您是从RPM或Debian软件包安装的,那么这将是/ usr / lib / sqoop / lib。)每个驱动程序.jar文件还有一个特定的驱动程序类,它定义了驱动程序的入口点。例如,MySQL的Connector / J库的驱动程序类为com.mysql.jdbc.Driver。请参阅数据库供应商特定的文档以确定主驱动程序类。必须使用--driver。
将此类作为Sqoop的参数提供
您可能有兴趣了解连接器和驱动程序之间的区别here是文章
答案 1 :(得分:6)
另一种避免使用共享库的解决方案是使用HADOOP_CLASSPATH将驱动程序jar添加到sqoop的类路径中。我没有--libjars选项可以工作。此解决方案也适用于使用kerberos的安全集群。
HADOOP_CLASSPATH=/use.case/lib/postgresql-9.2-1003-jdbc4.jar
sqoop export --connect jdbc:postgresql://db:5432/user \
--driver org.postgresql.Driver \
--connection-manager org.apache.sqoop.manager.GenericJdbcManager \
--username user \
-P \
--export-dir /user/hive/warehouse/db1/table1 \
--table table2
这个至少适用于sqoop 1.4.3-cdh4.4.0
答案 2 :(得分:2)
您需要将MySql连接器添加到/ usr / lib / sqoop / lib。 默认情况下,MySQL JDBC驱动程序不存在于Sqoop发行版中,以确保默认发行版完全符合Apache许可证。 希望这有助于...... !!!
答案 3 :(得分:0)
如果您已将mysql驱动程序复制到sqoop lib文件夹。它肯定会起作用。确保sqoop命令正确
/home/hduser/sqoop/bin/sqoop import --connect jdbc:mysql://localhost:3306/test --username root --password root -–table practice_1 -m 1
答案 4 :(得分:0)
将'mysql-connector-java-5.1.41-bin.jar'复制到sqoop / lib文件夹并执行sqoop import语句
答案 5 :(得分:0)
这是Oozie ShareLib问题。以下脚本适用于我:
在壳牌公司
sudo -u hdfs hadoop fs -chown cloudera:cloudera /user/oozie/share/lib/lib_20170719053712/sqoop
hdfs dfs -put /var/lib/sqoop/mysql-connector-java.jar /user/oozie/share/lib/lib_20170719053712/sqoop
sudo -u hdfs hadoop fs -chown oozie:oozie /user/oozie/share/lib/lib_20170719053712/sqoop
oozie admin -oozie http://localhost:11000/oozie -sharelibupdate
oozie admin -oozie http://localhost:11000/oozie -shareliblist sqoop
在Hue Sqoop客户处
sqoop list-tables --connect jdbc:mysql://localhost/retail_db --username root --password cloudera
更多详细信息,位于:
https://blog.cloudera.com/blog/2014/05/how-to-use-the-sharelib-in-apache-oozie-cdh-5/
答案 6 :(得分:-3)
您需要将priveleges
授予表格,如下所示:
授予标记表上的所有权限。*至'root'@'192.168.168.1' 由'root123'标识;
刷新权限;
这是我成功执行的示例命令:
sqoop import --verbose --fields-terminated-by',' - connect jdbc:mysql://192.168.168.1/test --username root --password root123 - 表学生--hive-import --create-hive-table --hive-home / home / training / hive --warehouse-dir / user / hive / warehouse --fields-terminated-by', - --hive-table studentmysql