【问题标题】:Accumulo Write: Trying to create and insert data from mapreduceAccumulo Write:尝试从 mapreduce 创建和插入数据
【发布时间】:2015-02-13 08:04:47
【问题描述】:

我正在尝试使用 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。但这无济于事。

【问题讨论】:

    标签: hadoop mapreduce accumulo


    【解决方案1】:

    您的作业类路径似乎缺少 Thrift 类。我假设您正在使用标准的 hadoop job 命令运行您的工作。

    在这种情况下,您有两种选择:

    1. 手动将必要的 jar 添加到类路径中。这将是thrift.jaraccumulo-start.jaraccumulo-core.jar,可能还有accumulo-trace.jar,具体取决于您的版本。您需要使用-libjars 选项指定这些,更完整的阅读可通过blog post 获得。

    2. 使用内置 Apache Accumulo 工具来启动您的工作。大多数版本的 Accumulo 都带有一个名为 tool.sh 的启动器脚本,它将自动为您添加适当的 jar。它通常位于$ACCUMULO_HOME/bin/tool.sh 下。某些发行版可能会将其称为其他名称,例如 accumulo-tool,以消除它与其他工具的歧义。示例可见user manual(第三个代码块)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-29
      • 2022-11-13
      • 2016-05-29
      • 2015-02-18
      • 2017-04-13
      相关资源
      最近更新 更多