0

削減タスクをスキップして、マップから直接 cassandra に書き込もうとすると、次の例外が発生します。

. . .

    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)
4

1 に答える 1

1

幸いなことに、私はこれを自分で解決することができました。

InvalidRequestException (理由: 構成されていない columnfamily 出力)

この例外は、指定された列ファミリー名がデータベースに作成されていない場合に発生します。

列ファミリーとは、リレーショナル データベースのテーブルを意味します。この問題を解決するには 2 つの方法があります。Java コードでは、列ファミリーの名前をデータベースに存在する名前に変更できます。

于 2012-05-18T13:20:23.240 に答える