使用Java编写Hadoop数据生成器生成1G~10G大小的数据,字段必须包括id,日期,手机号码、型号、操作系统字段。
时间: 2024-03-25 18:40:44 浏览: 15
好的,我可以为您提供一个基于Java编写的Hadoop数据生成器示例代码,可以生成指定大小和字段的数据文件。请注意,这个示例代码仅供参考,您需要根据自己的需求进行修改和适配。
```java
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;
public class HadoopDataGenerator {
private static final int MIN_SIZE = 1024 * 1024; // 1MB
private static final int MAX_SIZE = 1024 * 1024 * 10; // 10MB
private static final String[] MODELS = {"iPhone X", "Galaxy S9", "Pixel 2", "OnePlus 6T"};
private static final String[] OS = {"iOS", "Android", "Windows", "Linux"};
public static void main(String[] args) throws IOException {
if (args.length < 2) {
System.err.println("Usage: HadoopDataGenerator <output-file> <file-size-in-MB>");
System.exit(1);
}
String outputFile = args[0];
int fileSize = Integer.parseInt(args[1]) * 1024 * 1024;
Random random = new Random();
BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile));
int bytesWritten = 0;
while (bytesWritten < fileSize) {
StringBuilder sb = new StringBuilder();
sb.append(random.nextInt(1000000)).append(","); // id
sb.append(getRandomDate()).append(","); // date
sb.append(getRandomPhoneNumber()).append(","); // phone number
sb.append(MODELS[random.nextInt(MODELS.length)]).append(","); // model
sb.append(OS[random.nextInt(OS.length)]); // os
sb.append("\n");
String line = sb.toString();
writer.write(line);
bytesWritten += line.getBytes().length;
}
writer.close();
}
private static String getRandomDate() {
Random random = new Random();
int year = 2010 + random.nextInt(10);
int month = random.nextInt(12) + 1;
int day = random.nextInt(28) + 1;
return String.format("%04d-%02d-%02d", year, month, day);
}
private static String getRandomPhoneNumber() {
Random random = new Random();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 11; i++) {
sb.append(random.nextInt(10));
}
return sb.toString();
}
}
```
这个示例代码会生成一个指定大小的CSV格式数据文件,包含id、日期、手机号码、型号和操作系统字段。您可以通过修改MODELS和OS数组来添加或修改字段值。同时,您需要在命令行中传入生成数据文件的路径和大小(单位为MB)。比如:
```
java HadoopDataGenerator /path/to/output/file.csv 100
```
以上命令将生成一个100MB大小的数据文件。请注意,由于随机生成数据,每次生成的数据文件都会不同。