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

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

}
}

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
相关文章
|
2月前
|
消息中间件 分布式计算 NoSQL
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
45 0
|
2月前
|
消息中间件 存储 分布式计算
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
101 0
|
25天前
|
移动开发 Java Scala
Scala 正则表达式
Scala 正则表达式
25 5
|
24天前
|
Java Scala
Scala 文件 I/O
Scala 文件 I/O
20 1
|
2月前
|
Java 大数据 数据库连接
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
35 2
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
|
2月前
|
消息中间件 存储 druid
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
49 3
|
2月前
|
消息中间件 资源调度 大数据
大数据-112 Flink DataStreamAPI 程序输入源 DataSource 基于文件、集合、Kafka连接器
大数据-112 Flink DataStreamAPI 程序输入源 DataSource 基于文件、集合、Kafka连接器
50 0
|
2月前
|
消息中间件 分布式计算 Kafka
大数据-99 Spark 集群 Spark Streaming DStream 文件数据流、Socket、RDD队列流
大数据-99 Spark 集群 Spark Streaming DStream 文件数据流、Socket、RDD队列流
37 0
|
2月前
|
SQL 分布式计算 Java
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
61 0
|
2月前
|
缓存 分布式计算 大数据
大数据-90 Spark 集群 RDD 编程-高阶 RDD容错机制、RDD的分区、自定义分区器(Scala编写)、RDD创建方式(一)
大数据-90 Spark 集群 RDD 编程-高阶 RDD容错机制、RDD的分区、自定义分区器(Scala编写)、RDD创建方式(一)
61 0