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

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 大数据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")

}
}

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
11月前
|
消息中间件 分布式计算 NoSQL
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
160 0
|
11月前
|
消息中间件 存储 分布式计算
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
207 0
|
10月前
|
移动开发 Java Scala
Scala 正则表达式
Scala 正则表达式
101 5
|
10月前
|
Java Scala
Scala 文件 I/O
Scala 文件 I/O
87 1
|
11月前
|
Java 大数据 数据库连接
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
134 2
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
|
11月前
|
消息中间件 存储 druid
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
150 3
|
11月前
|
消息中间件 资源调度 大数据
大数据-112 Flink DataStreamAPI 程序输入源 DataSource 基于文件、集合、Kafka连接器
大数据-112 Flink DataStreamAPI 程序输入源 DataSource 基于文件、集合、Kafka连接器
154 0
|
11月前
|
消息中间件 分布式计算 Kafka
大数据-99 Spark 集群 Spark Streaming DStream 文件数据流、Socket、RDD队列流
大数据-99 Spark 集群 Spark Streaming DStream 文件数据流、Socket、RDD队列流
121 0
|
11月前
|
SQL 分布式计算 Java
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
217 0
|
11月前
|
缓存 分布式计算 大数据
大数据-90 Spark 集群 RDD 编程-高阶 RDD容错机制、RDD的分区、自定义分区器(Scala编写)、RDD创建方式(一)
大数据-90 Spark 集群 RDD 编程-高阶 RDD容错机制、RDD的分区、自定义分区器(Scala编写)、RDD创建方式(一)
169 0

热门文章

最新文章