本文共 3306 字,大约阅读时间需要 11 分钟。
对包含多行数据的数据集进行预处理,读入文本文件数据集,为每一条记录增加一个唯一的ID,并保存成一个新的文本文件。其中每行的ID生成规则为:每一条记录对应生成0-33随机数,每个数对应一个特定省份,最后原始记录和新生成的省份标签一起写入新的文本文件中
Shell终端执行语句
import java.io.*;import java.util.Random; public class bigData { public static void main(String[] args) { FileInputStream fis = null;//文件输入流 FileOutputStream fos = null;//文件输出流 InputStreamReader isr = null; OutputStreamWriter osw = null; BufferedReader br = null; BufferedWriter bw =null; try { String str = ""; String str1 = ""; String str2 = ""; int rand; fis = new FileInputStream("e:\\bigdatain.txt");// 读入本地文件 fos = new FileOutputStream("e:\\bigdataout.txt");//写入本地文件 isr = new InputStreamReader(fis);// InputStreamReader osw = new OutputStreamWriter(fos,"UTF-8");//写入文件编码格式为UTF-8 br = new BufferedReader(isr);// 从字符输入流中读取文件中的内容 bw = new BufferedWriter(osw);//将字符输出流写入到文件中 String a[] = { "山东","山西","河南","河北","陕西","内蒙古","上海市","北京市","重庆市","天津市","福建","广东", "广西","云南", "浙江","贵州","新疆","西藏","江西","湖南","湖北","黑龙江","吉林","辽宁","江苏", "甘肃", "青海","四川","安徽","宁夏","海南","香港","澳门","台湾"}; StringBuffer strb= new StringBuffer();//定义一个可变类型的String while ((str = br.readLine()) != null) { rand=new Random().nextInt(35);//生成0-34随机数 str1 = "\t"+a[rand] + "\n";//读出对应标识ID str2=strb.append(str).append(str1).toString();//当读取的一行不为空时,把读到的str和str1进行连接并把值赋给str2 } System.out.println(str2);// 打印出str2 bw.write(str2+"\n");//写入文件 } catch (FileNotFoundException e) { System.out.println("找不到指定文件"); } catch (IOException e) { System.out.println("读取/写入文件失败"); } finally { try { br.close(); isr.close(); fis.close(); bw.close(); osw.close(); fos.close(); } catch (IOException e) { e.printStackTrace(); } } }}
因为数据太多太大,花费时间比较多,所以选择简单地创建一个文件来进行演示,结果显示如下:(左:读入文件;右:写入文件)
有什么问题欢迎大家留言多多指教。