尝试直接从地图写入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)
答案 0 :(得分:1)
幸运的是,我可以自己解决这个问题。
InvalidRequestException(why:unconfigured columnfamily output)
如果未在数据库中创建给定的列系列名称,则会遇到此异常。
列系列表示关系数据库中的表。有两种方法可以解决这个问题。 在java代码中,您可以将列族的名称更改为数据库中现有的名称。