Sqoop 导入无法从 Monet DB 导入数据

问题描述

Sqoop 导入命令失败并出现错误 -

无法加载数据库驱动程序类:nl.cwi.monetdb.jdbc.MonetDriver

Sqoop 命令

sqoop import \
--driver nl.cwi.monetdb.jdbc.MonetDriver \
--connect "jdbc:monetdb://host:port/service" \
--username <user> \
--password <pwd> \
--fields-terminated-by '|' \
--lines-terminated-by '\n' \
--delete-target-dir \
--query "query AND \$CONDITIONS" \
--split-by AVP_KEY \
--target-dir <targetdir> \
--direct \
--columns columns \
-- --schema <schema> \
-m 2

查看其他Sqoop导入问题并下载了monetjdbc jar文件并使用

导出 HADOOP_CLAsspATH="/abs/path/dir/monetdb-jdbc-3.0.jre8.jar"

由于不同的错误而失败

Exception in thread "main" java.lang.NoSuchMethodError: java.nio.CharBuffer.mark()Ljava/nio/CharBuffer;
        at org.monetdb.mcl.parser.StartOfheaderParser.getNextAsstring(UnkNown

来源)

如何调试这个问题。

解决方法

看来你在 Java 8 和 9 之间遇到了 java.nio.CharBuffer API 的变化。最近有一个关于这个问题的错误修正:https://dev.monetdb.org/hg/monetdb-java/rev/5ddfc0aa7f0e 你可以自己编译源代码,等待下一个版本或使用 Java 9 作为临时解决方案。