Cassandra Definitive Guide book は、かなり古くなっているため、現時点では不十分なリソースです。それ以来、Cassandra は Hadoop と同様に大きく変化したため、Cassandra と Hadoop の統合の章は特に信頼できません。
完全に動作する Cassandra 構成は次のとおりです。
ConfigHelper.setRangeBatchSize(getConf(), 99);
final Job job = new Job(getConf(), "average");
final Configuration conf = job.getConfiguration();
ConfigHelper.setInputRpcPort(conf, "9160");
ConfigHelper.setInputInitialAddress(conf, cassHost);
ConfigHelper.setInputPartitioner(conf, "org.apache.cassandra.dht.Murmur3Partitioner");
ConfigHelper.setInputColumnFamily(conf, conf.get(keyspace), conf.get(inputCF));
//get all records
SlicePredicate predicate = new SlicePredicate().setSlice_range(new SliceRange(ByteBufferUtil.bytes(""), ByteBufferUtil.bytes(""), false, Integer.MAX_VALUE));
ConfigHelper.setInputSlicePredicate(conf, predicate);
ConfigHelper.setOutputInitialAddress(conf, cassHost);
ConfigHelper.setOutputRpcPort(conf, "9160");
ConfigHelper.setOutputPartitioner(conf, "org.apache.cassandra.dht.Murmur3Partitioner");
ConfigHelper.setOutputColumnFamily(conf, conf.get(keyspace), conf.get(outputCF));
あなたの回線の問題:
String value = new String(column.value());
String
コンストラクタに渡そうとしています。以前のバージョンの Cassandraでは がcolumn.value()
返さbyte[]
れていましたが、現在はByteBuffer
. 基になるデータが実際に文字列である場合は、Cassandra を使用ByteBufferUtil.string()
してデコードできます。したがって、新しい行は次のようになります。
String value = ByteBufferUtil.string(column.value());