Эта программа создает sstables, которые будут использоваться вместе с sstableloader в cassandra. Но, когда я запускаю эту программу, она дает мне эту ошибку:При создании sstable в Cassandra я получаю ошибку «Не могу найти файл yaml»
Не удается найти cassandra.yaml Ошибка фатальной конфигурации; не удалось запустить сервер. См. Журнал для stacktrace.
Я запускаю Apache Cassandra v 2.1.2 на 32-разрядной машине ubuntu 12.04. Я нашел правдоподобное решение на сайте datastax, link here, но я не могу выполнить точное решение
У кого-нибудь есть идея, что делать дальше?
package com.cassandra;
import static org.apache.cassandra.utils.ByteBufferUtil.bytes;
import static org.apache.cassandra.utils.UUIDGen.decompose;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import org.apache.cassandra.db.marshal.AbstractType;
import org.apache.cassandra.db.marshal.AsciiType;
import org.apache.cassandra.db.marshal.CompositeType;
import org.apache.cassandra.db.marshal.CompositeType.Builder;
import org.apache.cassandra.db.marshal.UUIDType;
import org.apache.cassandra.dht.Murmur3Partitioner;
import org.apache.cassandra.io.sstable.SSTableSimpleUnsortedWriter;
public class SStableBuilder {
static String csvfilename = "records.csv";
public static void main(String[] args) {
try {
buildSStables();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void buildSStables() throws Exception {
String keyspace = "samplekey";
String table = "users";
File directory = new File(keyspace + "/" + table);
if (!directory.exists()) {
directory.mkdirs();
}
List<AbstractType<?>> compositeColumnValues = new ArrayList<AbstractType<?>>();
compositeColumnValues.add(AsciiType.instance);
compositeColumnValues.add(AsciiType.instance);
CompositeType compositeColumn = CompositeType.getInstance(compositeColumnValues);
System.out.println("yahahahaha");
SSTableSimpleUnsortedWriter bulkWriter = new SSTableSimpleUnsortedWriter(
directory, new Murmur3Partitioner(), keyspace, table,
compositeColumn, null, 64);
// Create a single timestamp for each insert
long timestamp = System.currentTimeMillis() * 1000;
BufferedReader reader = new BufferedReader(new FileReader(csvfilename));
String line;
int lineNumber = 1;
CsvEntry entry = new CsvEntry();
while ((line = reader.readLine()) != null) {
if (entry.parse(line, lineNumber)) {
ByteBuffer uuid = ByteBuffer.wrap(decompose(entry.key));
bulkWriter.newRow(uuid);
Builder builder = compositeColumn.builder();
builder.add(bytes(entry.firstname));
builder.add(bytes("firstname"));
bulkWriter.addColumn(builder.build(), bytes(entry.firstname), timestamp);
builder = compositeColumn.builder();
builder.add(bytes(entry.firstname));
builder.add(bytes("lastname"));
bulkWriter.addColumn(builder.build(), bytes(entry.lastname), timestamp);
builder = compositeColumn.builder();
builder.add(bytes(entry.firstname));
builder.add(bytes("password"));
bulkWriter.addColumn(builder.build(), bytes(entry.password), timestamp);
builder = compositeColumn.builder();
builder.add(bytes(entry.firstname));
builder.add(bytes("age"));
bulkWriter.addColumn(builder.build(), bytes(String.valueOf(entry.age)), timestamp);
builder = compositeColumn.builder();
builder.add(bytes(entry.firstname));
builder.add(bytes("email"));
bulkWriter.addColumn(builder.build(), bytes(entry.email), timestamp);
}
lineNumber++;
}
reader.close();
System.out.println("Success");
bulkWriter.close();
System.exit(0);
}
static class CsvEntry {
UUID key;
String firstname;
String lastname;
String password;
long age;
String email;
boolean parse(String line, int lineNumber) {
// Ghetto csv parsing
String[] columns = line.split(",");
if (columns.length != 6) {
System.out.println(String.format(
"Invalid input '%s' at line %d of %s", line,
lineNumber, csvfilename));
return false;
}
try {
key = UUID.fromString(columns[0].trim());
firstname = columns[1].trim();
lastname = columns[2].trim();
password = columns[3].trim();
age = Long.parseLong(columns[4].trim());
email = columns[5].trim();
return true;
} catch (NumberFormatException e) {
System.out.println(String.format(
"Invalid number in input '%s' at line %d of %s", line,
lineNumber, csvfilename));
return false;
}
}
}
}
Я имел системное свойство 'cassandra.config' к месту YAML файла. Теперь он начал давать еще несколько ошибок, говоря, что это недопустимый файл yaml. Он не может определить некоторые переменные, упомянутые в файле yaml. – nEO