1

我尝试使用 Hadoop 将数据库从 mysql 导入 Hive,并使用来自 sqoop 的“--hive import”命令自动创建表并加载数据到 hive。

我使用下面的命令通过 sqoop 执行导入

./sqoop-import --connect jdbc:mysql://localhost/paman -table bibis -m 1 -hive-import

执行此命令时:

hadoop@dewi:/opt/sqoop/bin$ ./sqoop-import --connect jdbc:mysql://localhost/paman -table bibis -m 1 -hive-import
12/06/11 16:08:47 INFO tool.BaseSqoopTool: Using Hive-specific delimiters for output. You can override
12/06/11 16:08:47 INFO tool.BaseSqoopTool: delimiters with --fields-terminated-by, etc.
12/06/11 16:08:47 INFO tool.CodeGenTool: Beginning code generation
12/06/11 16:08:47 ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.RuntimeException: Could not load db driver class: com.mysql.jdbc.Driver
java.lang.RuntimeException: Could not load db driver class: com.mysql.jdbc.Driver
    at com.cloudera.sqoop.manager.SqlManager.makeConnection(SqlManager.java:597)
    at com.cloudera.sqoop.manager.GenericJdbcManager.getConnection(GenericJdbcManager.java:51)
    at com.cloudera.sqoop.manager.MySQLManager.execute(MySQLManager.java:201)
    at com.cloudera.sqoop.manager.SqlManager.getColumnTypesForRawQuery(SqlManager.java:177)
    at com.cloudera.sqoop.manager.SqlManager.getColumnTypes(SqlManager.java:161)
    at com.cloudera.sqoop.orm.ClassWriter.generate(ClassWriter.java:908)
    at com.cloudera.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:82)
    at com.cloudera.sqoop.tool.ImportTool.importTable(ImportTool.java:337)
    at com.cloudera.sqoop.tool.ImportTool.run(ImportTool.java:423)
    at com.cloudera.sqoop.Sqoop.run(Sqoop.java:144)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79)
    at com.cloudera.sqoop.Sqoop.runSqoop(Sqoop.java:180)
    at com.cloudera.sqoop.Sqoop.runTool(Sqoop.java:218)
    at com.cloudera.sqoop.Sqoop.main(Sqoop.java:228)
hadoop@dewi:/opt/sqoop/bin$ 

我的 sqoop 命令有什么问题?还是 sqoop 或 hive 中还有其他配置?

请帮帮我

4

4 回答 4

1

首先,sqoop 检查位置的罐子

$SQOOP_HOME/lib

您必须将 mysql-connector jar 添加到此位置。您必须在 sqoop 导入命令中包含 --hive-table 参数,如下所示。

./sqoop-import --connect jdbc:mysql://localhost:<port_number>/paman -table bibis -m 1 -hive-import --hive-table hive_table_name

这里 hive_table_name 是动态创建的。

于 2014-05-06T13:07:08.927 回答
0

我还尝试将 $HADOOP_CLASSPATH 变量设置为指向我的 SQOOP jar,然后一切正常。

于 2013-05-08T08:25:11.913 回答
0

根据错误日志,sqoop 命令似乎无法加载 MySQL JDBC 驱动程序。您应该检查 $SQOOP_HOME/lib 路径中是否有 MySQL JDBC 驱动程序。

希望这可以帮助。

于 2012-06-11T09:47:07.463 回答
0

Hadoop 需要知道 mysql 连接器 jar 的位置。

例如,复制如下

sudo cp mysql-connector-java-5.1.24-bin.jar /usr/local/Cellar/hadoop/1.1.2/libexec/lib/

它对我有用。

另一种方法:

尝试使用 -libjar 参数指定额外的 Jar 文件。这是 Sqoop 传递给框架的通用 Hadoop 参数。

bin/sqoop import -libjars /path/to/mysql-connector-java-5.1.24-bin.jar --connect "..."
于 2013-05-04T06:59:11.983 回答