我尝试使用Hadoop将数据库从mysql导入Hive,并使用sqoop中的“--hive import”命令自动创建表并将数据加载到配置单元。
我使用命令bellow与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中有其他配置吗?
请帮帮我
答案 0 :(得分:1)
首先,sqoop检查位置中的jar
$SQOOP_HOME/lib
您必须将mysql-connector jar添加到此位置。您必须在sqoop import命令中包含--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。
答案 1 :(得分:0)
根据错误日志,似乎sqoop命令无法加载MySQL JDBC驱动程序。您应该检查$ SQOOP_HOME / lib路径中是否有MySQL JDBC驱动程序。
希望这有帮助。
答案 2 :(得分: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 "..."
答案 3 :(得分:0)
我也尝试将$ HADOOP_CLASSPATH变量设置为指向我的SQOOP jar,然后一切正常。