将数据写入Cassandra Hadoop Mapper(不减少)

时间:2012-05-17 21:12:57

标签: hadoop cassandra

尝试直接从地图写入cassandra时跳过reduce任务,我得到以下异常。

。 。

    ConfigHelper.setOutputColumnFamily(job.getConfiguration(), KEYSPACE, outputPath);

    job.setMapperClass(MapperToCassandra.class);
    job.setOutputKeyClass(Text.class);
    job.setOutputValueClass(Text.class);

    LOG.info("Writing output to Cassandra");
    //job.setReducerClass(ReducerToCassandra.class);
    job.setOutputFormatClass(ColumnFamilyOutputFormat.class);

    ConfigHelper.setRpcPort(job.getConfiguration(), "9160");
    //org.apache.cassandra.dht.LocalPartitioner
    ConfigHelper.setInitialAddress(job.getConfiguration(), "localhost");
    ConfigHelper.setPartitioner(job.getConfiguration(), "org.apache.cassandra.dht.RandomPartitioner");

。 。

任何人都可以帮我识别我错过的东西吗?

12/05/17 16:01:38 INFO mapred.JobClient: Task Id : attempt_201205141442_0042_m_000000_0, Status : FAILED
java.io.IOException: InvalidRequestException(why:unconfigured columnfamily output)
    at org.apache.cassandra.hadoop.ColumnFamilyRecordWriter$RangeClient.run(ColumnFamilyRecordWriter.java:307)
Caused by: InvalidRequestException(why:unconfigured columnfamily output)
    at org.apache.cassandra.thrift.Cassandra$batch_mutate_result.read(Cassandra.java:19479)
    at org.apache.cassandra.thrift.Cassandra$Client.recv_batch_mutate(Cassandra.java:1035)
    at org.apache.cassandra.thrift.Cassandra$Client.batch_mutate(Cassandra.java:1009)
    at org.apache.cassandra.hadoop.ColumnFamilyRecordWriter$RangeClient.run(ColumnFamilyRecordWriter.java:299)

1 个答案:

答案 0 :(得分:1)

幸运的是,我可以自己解决这个问题。

InvalidRequestException(why:unconfigured columnfamily output)

如果未在数据库中创建给定的列系列名称,则会遇到此异常。

列系列表示关系数据库中的表。有两种方法可以解决这个问题。 在java代码中,您可以将列族的名称更改为数据库中现有的名称。