我正在尝试将数据从 Vertica 传输到 Hive。根据手册,应将以下设置为输入格式:
-inputformat com.vertica.hadoop.deprecated.VerticaStreamingInput
但是 hadoop-vertica jar 有 org.apache.hadoop.vertica.VerticaStreamingInput
类而不是上面的类。
所以它抛出以下异常:
Exception in thread "main" java.lang.RuntimeException:
class org.apache.hadoop.vertica.VerticaStreamingInput not
org.apache.hadoop.mapred.InputFormat
完整的命令是:
$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/contrib/streaming/hadoop-streaming-*.jar \
-libjars $HADOOP_HOME/lib/hadoop-vertica.jar \
-Dmapred.vertica.hostnames=VerticaHost \
-Dmapred.vertica.database=ExampleDB \
-Dmapred.vertica.username=ExampleUser \
-Dmapred.vertica.password=password123 \
-Dmapred.vertica.port=5433 \
-Dmapred.vertica.input.query="SELECT * FROM allTypes ORDER BY key" \
-Dmapred.vertica.input.delimiter=, \
-Dmapred.map.tasks=1 \
-inputformat com.vertica.hadoop.deprecated.VerticaStreamingInput \
-input /tmp/input -output /tmp/output -reducer /bin/cat -mapper /bin/cat
Hive为CDH-4.4.0-1.cdh4.4.0.p0.39/环境,vertica为7.1
如果我有错误的 hadoop-vertica jar,我在哪里可以得到正确的?如果这不是问题所在,我做错了什么?
那么这个com.vertica.hadoop.deprecated.VerticaStreamingInput类是从哪里来的呢?我通过安装 Vertica 连接器获得它。(第 9 页,第 5 步)https://my.vertica.com/docs/7.0.x/PDF/HP_Vertica_7.0.x_HadoopIntegration.pdf
最佳答案
我刚刚从 the downloads page on my.vertica.com 下载了适用于 MapReduce 的 Hadoop 连接器.我使用的是 2.0 版本(支持 CDH 4),因为这是您所说的正在使用的 Hadoop 版本。
我查看了下载文件 (yarn-vertica_1.6.0.zip) 中的 hadoop-vertica.jar 文件,它的类文件位于正确的位置 (com.vertica.hadoop.deprecated)。该 zip 文件还包含源代码,因此您可以检查它。
我不知道 org.apache.hadoop.vertica.VerticaStreamingInput 是从哪里来的,但是下载连接器的新副本应该可以解决您的问题。确保下载 JDBC 驱动程序并执行文档中描述的其他 Java 配置。
关于hadoop - vertica jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30630030/