import java.io.{File,PrintWriter}

import java.text.SimpleDateFormat

import java.util.{Calendar, Date}

//import scala.io.Source

object FileOps {

def main(args: Array[String]): Unit = {

//文件读取

//    val file = Source.fromFile("D:\\software\\data\\scalaIO.txt")

//    file.foreach(print)

//    file.close()getTracffic()

* 文件格式:

* domain               tracffic  time

* www.ruozedata.com 64447 [2018-07-17 07:39:57]

* www.ruozedata.com 13781 [2018-07-11 06:52:41]

//文件写入

//加载文件D:\software\data\ScalaWriter.txt  如果没有会创建

val writer = new PrintWriter(new File("D:\\software\\data\\ScalaWriter.txt"))

writer.flush();   //清空文件内容

//输入标题字段:domain   tracffic  time

//writer.println("domain\ttracffic\ttime")

//定义网址的数组

val arr = Array("www.ruozedata.com","www.zhibo8.com","www.dongqiudi.com")

//定义26个字母的数组 用于随机写入tracffic字段的值(非数字)

val arr2 = Array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z")

//定义一个数字的集合

val arr3 = (10000 to 99999).toArray

//用于接收tracffic值的变量

var ele = ""

for(i <- 1 until  100000){

//如果 i为偶数就设置ele的值为数字,否则设置为字母

ele =  if (i%10==0)  arr2((new util.Random).nextInt(26))  else  arr3((new util.Random).nextInt(arr3.length)).toString()

//将内容写入到文件里面

writer.println(arr((new util.Random).nextInt(3))+"\t"+ele+"\t"+(getNowDate()))

//关闭写入流

writer.close()

//获取动态时间的方法,格式:yyyy-MM-dd HH:mm:ss

def getNowDate(): String = {

// 动态获取日

var days = (new util.Random).nextInt(getNowMonthEnd()).toString() ;

// 动态获取小时

var hours = (new util.Random).nextInt(23).toString() ;

// 动态获取分钟

var minutes = (new util.Random).nextInt(59).toString() ;

// 动态获取秒

var seconds = (new util.Random).nextInt(59).toString() ;

//判断1-9的日需要在前面添加0

if (days == "0"){  // 如果获取的日为0,则需要手动处理成其他日,我这里处理成01

days = "01"

}else{

if ((days.length()) == 1) {

days = "0"+days

//判断1-9的日需要在前面添加0

hours = if (hours.length() == 1)  "0"+hours  else  hours

//判断1-9的日需要在前面添加0

minutes = if (minutes.length() == 1)  "0"+minutes  else  minutes

//判断1-9的日需要在前面添加0

seconds = if (seconds.length() == 1)  "0"+seconds  else  seconds

//获取当前日期

val now: Date = new Date()

val dateFormat: SimpleDateFormat = new SimpleDateFormat("yyyy-MM")

//格式化当前日期  格式:yyyy-MM

val date = dateFormat.format(now)

//返回动态日期格式:[yyyy-MM-dd HH:mm:ss]

return "["+date+"-"+days+" "+hours+":"+minutes+":"+seconds+"]"

//获取当前月的最后一天的方法

def getNowMonthEnd():Int={

var period:String=""

var cal:Calendar =Calendar.getInstance();

var df:SimpleDateFormat = new SimpleDateFormat("dd");

cal.set(Calendar.DATE, 1)

cal.roll(Calendar.DATE,-1)

period=df.format(cal.getTime())//本月最后一天

Integer.parseInt(period)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29609890/viewspace-2168576/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29609890/viewspace-2168576/

今天在Windows上跑 Scala 词频统计的时候,发现RDD 文件 并不能直接 保存 到本地的 txt 文件 中,如果使用saveAsTextFile方法的话,会将RDD 数据 文件 夹且 数据 不能直接使用 但是使用其他的方法又比较麻烦,对新手很不友好,这里教大家一个小方法 将RDD 数据 使用toArray()转为数组即可遍历 写入 本地 文件 了,如果有更好的方法,私信笔者,毕竟该方法 Scala 官方已经不推荐使用了。 代码如下: package day01 import java .io.PrintWriter import java
文章目录读取 文件 数据 按行读取按字符读取 写入 数据 读取 文件 数据 Scala 语言的 Source单例对象中 中, 提供了一些非常便捷的方法, 从而使开发者可以快速的从 指定 数据 源(文本文 件, URL地址等)中获取 数据 , 在使用 Source单例对象 之前, 需要先导包, 即 import scala .io.Source . 我们可以以 行 为单位, 来读取 数据 源中的 数据 , 返回值是一个 迭代器类型的对象 . 然后通过 toArray, toList 方 法, 将这些 数据 放到数组或者列表中即可.
一、使用DataFrame.saveAsHadoopDataset(conn)方法。 特点:适合做批量的 写入 。优点为批量 写入 方便快捷。缺点对于 数据 量大的DF 写入 速度太慢。 val conn = new JobConf(HBaseConfigurationcreate())//设置HBase连接 conn.set(,) conn.set(,)//设置Host和Port conn.set(TableO...
scala > a.select(a.col("id"),a.col("username"),a.col("birthday").cast("string").as("bir")).show 2 遍历DF的所有列依次修改,适用于修改成统一的类型
val writer = new PrintWriter(new File("data/test. txt " )) userdata //spark rdd .map(s=>s.toString) .collect .foreach{s=> writer.write(s+"\n") writer.close()
object jsonTest { case class Person(id:Int,name:String,age:Int) def main(args: Array[String]): Unit = {
scala 中的list是一个不可变的列表,有时候我们想直接添加对象不太方便,这个时候可以先转成 java 的List添加完再转回去. LIst支持在头部快速添加和移除条目,但是不提供快速按下标访问的功能,这个功能需要线性遍历列。 快速的头部添加和移除意味着模式匹配很顺畅 List列表跟数组非常像,2者都是同构的,同一个列表的所有元素必须是相同类型。 如果我们 想要 往一个list里面存一个obje...
def main(args: Array[String]): Unit = { //1.从 文件 中读取 数据 Source.fromFile("src/main/resources/test. txt ").foreach(print) //2。将 数据 写入 文件 java 中的 val writer = new Print