slm*_*ers 1 java random cassandra
我有一个学校的大数据项目,需要我们构建和查询8节点的Cassandra系统。系统必须包含至少7 TB的数据。我必须自己生成所有这些数据。不需要数据与赋值“相关”,即每一列可以只是一个随机整数。话虽如此,要求每个值是随机的或基于随机序列。
因此,我编写了一个简单的Java程序来生成random ints
。我可以在中生成~200 MB
随机测试数据~120s
。现在除非我的数学不上课,否则我想我会很烦。
中有35000
200MB
单位7 terabytes
。
35000 * 120 = 4 200 000 seconds
420万/ 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;
}
Run Code Online (Sandbox Code Playgroud)
最初我是在生成更多test specific
数据,例如phone numbers
etc,但是后来我决定只生成随机数据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;
}
Run Code Online (Sandbox Code Playgroud)
并使用此工具生成您的Yaml。
您将在几分钟之内用C *获得随机数据,无需编码!