Spark+解析文本+递归+模式匹配+广播筛选

本文介绍了如何使用Spark进行文本处理,通过广播join操作匹配关键词,并在日志文件中统计出现次数。涉及正则匹配、递归目录搜索、数据整合与去重等技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

需求:查询给定的若干表在代码中有几个被使用

转换概念:给定的关键

词,在日志文件中命中了几种

选型:Spark解析关键词列表rdd1;Spark解析文件目录数据rdd2;rdd1 join rdd2(broadcast)

上代码:

Step 1:创建SparkContext

Step 2:读取目标路径下的文件

Step 3:读取关键词列表

Step 4:把若干文件的数据整合到一起

Step 6:核心计算【广播Join,计数,筛选,去重】

Step 7:关闭SparksContext

总结

技巧1:sc.textFile读文件,返回内容的数组,sc.wholeTextFiles读文件,返回的是[(path, content)],即文件路径和文件内容的元组的数组二者都可以正则匹配目录及文件,比如

技巧2:正则匹配不支持深度+2的递归,比如指定/opt/*;

技巧3:如果想覆盖的目录更全面些,可以自己弄一个数组,拼接成一串path

技巧4:如果想用多种分隔符可以用|隔开


需求:查询给定的若干表在代码中有几个被使用

转换概念:给定的关键

词,在日志文件中命中了几种

选型:Spark解析关键词列表rdd1;Spark解析文件目录数据rdd2;rdd1 join rdd2(broadcast)

(计划用flume采集目录下的文件,sink到HDFS,再用Spark计算,后来发现Spark就能全覆盖)

从一个列表中去若干文件中查找有多少个地方,用到了那几个单词

list.txt文件内容如下

table_a
table_b
table_c

被查询目录:

game
├── lagou
│   ├── notes
│   │   ├── Kafka.pdf
│   │   ├── Redis01.pdf
│   │   └── Redis06.pdf
│   ├── servers
│   │   ├── apache-maven-3.6.3
│   │   │   ├── bin
│   │   │   ├── conf
│   │   │   └── README.txt
│   │   ├── flume-1.9.0
│   │   │   ├── bin
│   │   │   ├── conf
│   │   │   └── tools
│   │   ├── hadoop-2.9.2
│   │   │   ├── bin
│   │   │   ├── etc
│   │   │   └── share
│   │   ├── hbase-1.3.1
│   │   │   ├── bin
│   │   │   ├── conf
│   │   │   └── README.txt
│   │   ├── hive-2.3.7
│   │   │   ├── bin
│   │   │   ├── conf
│   │   │   └── scripts
│   │   ├── kafka_2.12-1.0.2
│   │   │   ├── bin
│   │   │   ├── config
│   │   │   └── site-docs
│   │   ├── spark-2.4.5
│   │   │   ├── bin
│   │   │   ├── conf
│   │   │   └── yarn
│   │   └── zookeeper-3.4.14
│   │       ├── bin
│   │       ├── conf
│   │       └── zookeeper-server
│   └── software
│       ├── azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz
│       ├── cdh
│       │   ├── 5 -> 5.7.6
│       │   ├── 5.7 -> 5.7.6
│       │   └── 5.7.6
│       ├── clickhouse2
│       ├── flink-1.11.1-bin-scala_2.11.tgz
│       └── nohup.out
└── rh
    └── devtoolset-8
        ├── enable
        └── root
            ├── bin -> usr/bin
            ├── etc
            ├── home
            ├── opt
            ├── root
            ├── usr
            └── var

实验环境


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值