大数据Scala系列之文件以及正则表达式

简介: 大数据Scala系列之文件以及正则表达式1 读取行导入scala.io.Source后,即可引用Source中的方法读取文件信息。import scala.io.Sourceobject FileDemo extends App{ val source = Source.

大数据Scala系列之文件以及正则表达式
1 读取行
导入scala.io.Source后,即可引用Source中的方法读取文件信息。

import scala.io.Source
object FileDemo extends App{
val source = Source.fromFile("C:/Users/admin/res.txt")

//返回一个迭代器

val lines = source.getLines()
for(i <- lines)

println(i)
 //内容也可以放到数组中 

// val arr = source.getLines().toArray
// for(elem <- arr)
// println(elem)

 //文件内容直接转换成一个字符串 

// val contents = source.mkString
// println(contents)
}

2 读取字符
按字符读取文件中的内容

import scala.io.Source
object FileDemo extends App{
val source = Source.fromFile("C:/Users/admin/res.txt")
for(c <- source)

println(c)

}

3 读取单词
把文件中的内容,转换成一个单词的数组

import scala.io.Source
object FileDemo extends App{
val source = Source.fromFile("C:/Users/admin/res.txt")
val contents = source.mkString.split(" ")
for(word <- contents)
println(word)
}

4 读取网络文件
Source可以直接读取来自URL等非文件源的内容

import scala.io.Source
object FileDemo extends App{
val source = Source.fromURL("http://www.baidu.com")
val lines = source.getLines()
for(i <- lines)

println(i)

}

5 写文件
scala 没有内建的对写入文件的支持,要写入文件,使用Java.io.PrintWriter

val out = new PrintWriter("numbers.txt")
for(i <- 1 to 100) out.println(i)
out.close

6 正则表达式
构造一个Regex对象,用String类的r方法或者使用new Regex(" ")

如果正则表达式中包含反斜杠或者引号的化,可以使用""" """

object RegexDemo extends App{

//构建一个正则表达式

val numPattern ="[0-9]+".r

//val numPattern = new Regex("abl[ae]\\d+")
//构建一个字符串

val matchStr ="98 bottles,99bottles"

//使用findAllIn方法返回所有匹配项的迭代器

for (matchStr <- numPattern.findAllIn(matchStr))

println(matchStr)//98 99
//使用""" """"构造含有特殊字符的正则表达式

val wsnumPattern ="""s+[0-9]+s+"""

//调用findFirstIn方法返回首个匹配项

val first = numPattern.findFirstIn(matchStr)
println(first) //Some(98)

//调用findPrefixOf方法返回字符串的开始部分是否能匹配

val ifStartMatch = numPattern.findPrefixOf(matchStr)
println(ifStartMatch)//Some(98)

//调用replaceFirstIn使用特定的字符串替换首个匹配项

val res1 = numPattern.replaceFirstIn(matchStr,"xx")
println(res1)//xx bottles,99bottles

 //调用replaceAllIn使用特定的字符串替换所有的匹配项

val res2 = numPattern.replaceAllIn(matchStr,"xx")
println(res2)//xx bottles,xxbottles
}

6 正则表达式组
分组可以让我们方便地获取正则表达式的子表达式。在你想要提取的子表达式两侧加上圆括号

object RegexDemo extends App{
//数字和字母的组合正则表达式
val numitemPattern="""([0-9]+) ([a-z]+)""".r
val line="666 spark"
for(numitemPattern(num,item) <- numitemPattern.findAllIn(line)){

println(num+"\t"+item) 

}
line match{

case numitemPattern(num,item)=> println(num+"\t"+item)
case _=>println("Nothing matched")

}
}

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
相关文章
|
1月前
|
分布式计算 DataWorks 关系型数据库
DataWorks常见问题之dataworks100g大小的csv文件上传到odps失败如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
6月前
|
分布式计算 Hadoop 大数据
【大数据开发技术】实验05-HDFS目录与文件的创建删除与查询操作
【大数据开发技术】实验05-HDFS目录与文件的创建删除与查询操作
75 0
|
6月前
|
分布式计算 Hadoop 大数据
【大数据开发技术】实验04-HDFS文件创建与写入
【大数据开发技术】实验04-HDFS文件创建与写入
100 0
|
6月前
|
分布式计算 大数据 Hadoop
【大数据开发技术】实验03-Hadoop读取文件
【大数据开发技术】实验03-Hadoop读取文件
102 0
|
6月前
|
分布式计算 MaxCompute
在MaxCompute中,你可以使用OUTPUT语句将查询结果输出到日志文件中
在MaxCompute中,你可以使用OUTPUT语句将查询结果输出到日志文件中
30 1
|
3月前
|
分布式计算 DataWorks API
dataworks100g大小的csv文件怎么上传到odps?
【1月更文挑战第20天】【1月更文挑战第96篇】dataworks100g大小的csv文件怎么上传到odps?
53 1
|
1月前
|
分布式计算 DataWorks 关系型数据库
DataWorks报错问题之使用oss读取csv文件至odps 报错如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
3月前
|
分布式计算 DataWorks MaxCompute
这个错误可能是由于读取CSV文件到ODPS的过程中出现了一些问题
这个错误可能是由于读取CSV文件到ODPS的过程中出现了一些问题【1月更文挑战第10天】【1月更文挑战第50篇】
28 3
|
4月前
|
大数据 Scala
大数据生态思维导图____2021最新最全Scala语法思维导图!(待更新)
大数据生态思维导图____2021最新最全Scala语法思维导图!(待更新)
17 0
|
4月前
|
消息中间件 大数据 Apache
【云计算与大数据技术】流计算讲解及集群日志文件实时分析实战(附源码)
【云计算与大数据技术】流计算讲解及集群日志文件实时分析实战(附源码)
47 1