Accumulo Write:尝试从 mapreduce 创建和插入数据
Accumulo Write: Trying to create and insert data from mapreduce
我正在尝试使用 MapReduce 将数据写入 Accumulo 的表中。
以下是我的 accumulo 的 mapreduce 代码。
Job job = Job.getInstance(conf);
AccumuloOutputFormat.setZooKeeperInstance(job, accumuloInstance, zooKeepers);
AccumuloOutputFormat.setDefaultTableName(job, accumuloTableName);
AccumuloOutputFormat.setConnectorInfo(job, accumuloUser, new PasswordToken(accumuloPassword));
执行时,出现以下异常:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/thrift/TException
at org.apache.accumulo.core.client.mapreduce.lib.util.ConfiguratorBase.setConnectorInfo(ConfiguratorBase.java:107)
at org.apache.accumulo.core.client.mapreduce.AccumuloOutputFormat.setConnectorInfo(AccumuloOutputFormat.java:94)
at core.accumulo.mapreduce.AccumuloMapReduceWrite.main(AccumuloMapReduceWrite.java:96)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
我将如何解决这个问题?我也试过并推荐了几个 URL。但这还不够。
您的作业类路径似乎缺少 Thrift 类。我假设您是 运行 您使用标准 hadoop job
命令的工作。
在这种情况下,您有两个选择:
手动将必要的 jar 添加到类路径中。这将是 thrift.jar
、accumulo-start.jar
、accumulo-core.jar
,也可能是 accumulo-trace.jar
,具体取决于您的版本。您需要使用 -libjars
选项指定这些,更完整的阅读可以作为 blog post.
使用 Apache Accumulo 工具中的构建来启动您的作业。大多数版本的 Accumulo 都带有一个名为 tool.sh
的启动器脚本,它会自动为您添加合适的 jar。它通常位于 $ACCUMULO_HOME/bin/tool.sh
下。某些发行版可能将其称为其他名称,例如 accumulo-tool
,以将其与其他工具区分开来。示例可见user manual(第三个代码块)。
我正在尝试使用 MapReduce 将数据写入 Accumulo 的表中。 以下是我的 accumulo 的 mapreduce 代码。
Job job = Job.getInstance(conf);
AccumuloOutputFormat.setZooKeeperInstance(job, accumuloInstance, zooKeepers);
AccumuloOutputFormat.setDefaultTableName(job, accumuloTableName);
AccumuloOutputFormat.setConnectorInfo(job, accumuloUser, new PasswordToken(accumuloPassword));
执行时,出现以下异常:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/thrift/TException
at org.apache.accumulo.core.client.mapreduce.lib.util.ConfiguratorBase.setConnectorInfo(ConfiguratorBase.java:107)
at org.apache.accumulo.core.client.mapreduce.AccumuloOutputFormat.setConnectorInfo(AccumuloOutputFormat.java:94)
at core.accumulo.mapreduce.AccumuloMapReduceWrite.main(AccumuloMapReduceWrite.java:96)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
我将如何解决这个问题?我也试过并推荐了几个 URL。但这还不够。
您的作业类路径似乎缺少 Thrift 类。我假设您是 运行 您使用标准 hadoop job
命令的工作。
在这种情况下,您有两个选择:
手动将必要的 jar 添加到类路径中。这将是
thrift.jar
、accumulo-start.jar
、accumulo-core.jar
,也可能是accumulo-trace.jar
,具体取决于您的版本。您需要使用-libjars
选项指定这些,更完整的阅读可以作为 blog post.使用 Apache Accumulo 工具中的构建来启动您的作业。大多数版本的 Accumulo 都带有一个名为
tool.sh
的启动器脚本,它会自动为您添加合适的 jar。它通常位于$ACCUMULO_HOME/bin/tool.sh
下。某些发行版可能将其称为其他名称,例如accumulo-tool
,以将其与其他工具区分开来。示例可见user manual(第三个代码块)。