У меня есть большой проект данных для школы, который требует, чтобы мы строили и запрашивали 8-ю систему Cassandra. Система должна содержать не менее семи терабайт данных. Я должен сам генерировать все эти данные. Нет требования, чтобы данные были «релевантными» для присваивания, т. Е. Каждый столбец может быть просто случайным int. При этом требуется, чтобы каждое значение было случайным или основано на случайной последовательности.Генерировать случайные данные для Cassandra DB
Итак, я написал простую java-программу, чтобы просто генерировать случайные ints
. Я могу генерировать ~200 MB
случайных данных теста в ~120s
. Теперь, если моя математика не выключена, тогда я думаю, что у меня рассол.
Есть 35000
200MB
единиц в 7 terabytes
.
35000 * 120 = 4 200 000 seconds
4 200 000/3600 ~ 1167hours
1167/24 = 49 days
Таким образом, оказывается, что это займет 49 дней, чтобы произвести все тестовые данные, необходимые , Очевидно, это непрактично. Я ищу предложения, которые увеличат скорость, с которой я могу генерировать данные.
Я рассмотрел/с учетом:
установки коэффициента репликации до 8, чтобы уменьшить объем данных, необходимых для генерироваться, а также запустить программу генерации данных на всех 8 узлов.
редактировать: как я генерацию данных
private void initializeCols(){
cols = new ArrayList<Generator>();
cols.add(new IntGenerator(400));
}
public ArrayList<String> generatePage(){
ArrayList<String> page = new ArrayList<String>();
String line = "";
for(int i = 0; i < PAGE_SIZE; i++){
line = "";
for(Generator column : cols){
line += column.gen();
}
page.add(line);
}
return page;
}
первоначально я генерировал больше test specific
данных, таких как phone numbers
и т.д., но потом я решил просто генерировать случайные ints
для того, чтобы бриться некоторое время - - Не большая экономия. Вот класс IntGenerator
.
public IntGenerator(int series){
this.series = series;
}
public String gen(){
String output = "";
for(int i = 0; i < series; i++){
output += Integer.toString(randomInt(1,1000));
output += SEPERATOR;
}
return output;
}
Пожалуйста, пост, как вы генерируете данные, и как вы храните его в БД. –
Я не собираюсь загружать данные в db, но схема представляет собой «одну таблицу» с '400 столбцами', которые в этот момент будут все значениями' int'. – slmyers
С количеством конкатенаций, продолжающимся в ваших циклах, подумали ли вы об использовании StringBuilder, чтобы выжать из него больше сока? –