scala文件流操作,生成sparkpv,uv作业文件
package com.bjsxt.scalaspark.core.examples.pvAnduv
import java.io.File
import java.text.SimpleDateFormat
import java.util.{Date, Random}
import java.io.FileOutputStream
import java.io.OutputStreamWriter
import java.io.PrintWriter
/**
* 向文件中生产数据
*/
object ProducePvAndUvData {
//ip
val IP = 223
//地址
val ADDRESS = Array("北京", "天津", "上海", "重庆", "河北", "辽宁","山西",
"吉林", "江苏", "浙江", "黑龙江", "安徽", "福建", "江西",
"山东", "河南", "湖北", "湖南", "广东", "海南", "四川",
"贵州", "云南", "山西", "甘肃", "青海", "台湾", "内蒙",
"广西", "西藏", "宁夏", "新疆", "香港", "澳门")
//日期
val DATE = new SimpleDateFormat("yyyy-MM-dd").format(new Date())
//timestamp
val TIMESTAMP = 0L
//userid
val USERID = 0L
//网站
val WEBSITE = Array("www.baidu.com", "www.taobao.com", "www.dangdang.com", "www.jd.com", "www.suning.com", "www.mi.com", "www.gome.com.cn")
//行为
val ACTION = Array("Regist", "Comment", "View", "Login", "Buy", "Click", "Logout")
def main(args: Array[String]): Unit = {
val pathFileName = "./data/pvuvdata"
//创建文件
val createFile = CreateFile(pathFileName)
//向文件中写入数据 需要的对象
val file = new File(pathFileName)
val fos = new FileOutputStream(file, true)
val osw = new OutputStreamWriter(fos, "UTF-8")
val pw = new PrintWriter(osw)
if (createFile) {
var i = 0
//产生5万+数据
while (i < 50000){ //模拟一个ip
val random = new Random()
val ip = random.nextInt(IP) + "." + random.nextInt(IP) + "." + random.nextInt(IP) + "." + random.nextInt(IP)
//模拟地址
val address = ADDRESS(random.nextInt(34))
//模拟日期
val date = DATE
//模拟userid
val userid = Math.abs(random.nextLong)
/**
* 这里的while模拟是同一个用户不同时间点对不同网站的操作
*/
var j = 0
var timestamp = 0L
var webSite = "未知网站"
var action = "未知行为"
val flag = random.nextInt(5) | 1
while (j < flag) { // Threads.sleep(5);
//模拟timestamp
timestamp = new Date().getTime()
//模拟网站
webSite = WEBSITE(random.nextInt(7))
//模拟行为
action = ACTION(random.nextInt(6))
j += 1
/**
* 拼装
*/
val content = ip + "\t" + address + "\t" + date + "\t" + timestamp + "\t" + userid + "\t" + webSite + "\t" + action
System.out.println(content)
//向文件中写入数据
pw.write(content + "\n")
}
i += 1
}
//注意关闭的先后顺序,先打开的后关闭,后打开的先关闭
pw.close()
osw.close()
fos.close()
}
}
/**
* 创建文件
*/
def CreateFile(pathFileName: String): Boolean = {
val file = new File(pathFileName)
if (file.exists) file.delete
val createNewFile = file.createNewFile()
System.out.println("create file " + pathFileName + " success!")
createNewFile
}
}
scala文件流操作,生成sparkpv,uv作业文件的更多相关文章
- (C/C++学习)2.C语言中文件流操作基本函数总结
函数所在头文件:stdio.h 说明:前半部分主要为对各个文件流操作函数的例举,后半部分着重于上机运行分析.文中部分引用自王桂林老师的C/C++课件. 1.FIELE *fopen(const cha ...
- delphi 基础之三 文件流操作
文件流操作 Delphi操作流文件:什么是流?流,简单来说就是建立在面向对象基础上的一种抽象的处理数据的工具.在流中,定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员是对流进行所有操作的, ...
- C++学习7-面向对象编程基础(多态性与虚函数、 IO文件流操作)
多态 多态性是指对不同类的对象发出相同的消息将返回不同的行为,消息主要是指类的成员函数的调用,不同的行为是指不同的实现: 函数重载 函数重载是多态性的一种简单形式,它是指允许在相同的作用域内,相同的函 ...
- ndk学习之c++语言基础复习----C++容器、类型转换、异常与文件流操作
继续来复习C++,比较枯燥,但是这是扎实掌握NDK开发的必经之路,不容小觑. 容器: 容器,就是用来存放东西的盒子. 常用的数据结构包括:数组array, 链表list, 树tree, 栈stack, ...
- c++ ofstream & ifstream文件流操作
ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; //ofstream & ifstream inherit from istream class ...
- OJ的文件流操作
我们刷题的时候除了编码外,测试也是非常重要的,当测试样例比较小的时候,我们完全可以手打,但是当测试样例比较大时候,我们就抓狂了~ 相信不少人都知道利用文件流,但是应该还有新手跟我一样,一遍又一遍地输入 ...
- c#基础语言编程-文件流操作
引言 在System.IO 命名空间下提供了一系列的类,我们可以通过相应的类进行文件.目录.数据流的操作. 1.File类:提供用于创建.复制.删除.移动和打开文件的静态方法.File类 2.File ...
- C++中输入输出流及文件流操作笔记
1.流的控制 iomanip 在使用格式化I/O时应包含此头文件. stdiostream 用于混合使用C和C + +的I/O机制时,例如想将C程序转变为C++程序 2.类 ...
- 用内存流 文件流 资源生成客户端(Delphi开源)
正文:很多木马生成器就是用的内存流和文件流生成客户端的,废话不多说了,代码如下: unit Main; interface usesWindows, Messages, SysUtils, Varia ...
随机推荐
- Java int Integer
http://www.cnblogs.com/haimingwey/archive/2012/04/16/2451813.html http://developer.51cto.com/art/200 ...
- ansible初识二
一.ansible模块(yum.pip.service.conr.user.group) 上篇中我们已经学了ansible 的几个模块, 接下来再来学习几个, 那么你是否知道ansible 一共有多少 ...
- A generic error occurred in GDI+的解决方案
转自智慧光原文A generic error occurred in GDI+. 解决方法 使用image1.RotateFlip(RotateFlipType.Rotate90FlipNone)方法 ...
- Ansible 快速上手
Ansible优点: 充分利用现有设施.使用 Ansible 无需安装服务端和客户端,只要 SSH 即可.这意味着,任何一台装有 Ansible 的机器都可以成为强大的管理端.我觉得,这种去中心化的思 ...
- Spring与Redis的实现
前言 Redis作为缓存还是相当不错的,一定程度上缓解了数据库的IO操作,具体不多说,具体网上查找资料. 实战 不多说,直接上代码. 第一步:所需要的依赖 <!-- redis --> & ...
- PHP 性能优化之 PHP-FPM
简介: PHP-FPM 是一个 PHP FastCGI 管理器,一般 Nginx 上面跑 PHP 程序都会将 PHP 程序丢给 PHP-FPM 来解析.好了,就这样! PHP 5.4 开始集成了 PH ...
- Python nonlocal 与 global 关键字解析
nonlocal 首先,要明确 nonlocal 关键字是定义在闭包里面的.请看以下代码: x = 0 def outer(): x = 1 def inner(): x = 2 print(&quo ...
- proxmox 安装ROS 备忘
虚拟机设置:使用qemu64 CPU和vrtio网卡在家里测试性能最好.
- GLSL in ShaderLab
[Syntax] However, use of raw GLSL is only recommended for testing, or when you know you will only ta ...
- Nginx通过CORS实现跨域
Nginx通过CORS实现跨域 2016-09-01 10:33 阅读 9.4k 评论 0 社区广播:运维派(Yunweipai.com)是国内最早成立的IT运维社区,欢迎大家投稿,让运维人不再孤寂的 ...