Spark Streaming 作业练习
实验内容及要求
在本地或HDFS新建一个测试目录,编写一个简单程序,每随机间隔若干秒(5s以内)在该目录下新建一个文件,并写入若干行内容(每一行包含若干单词,单词之间以空格分隔)。现利用Spark Streaming分别完成如下单词统计:
(1)实时统计每10s新出现的单词数量(每10s统计1次);
(2)实时统计最近1分钟内每个单词的出现次数(每10s统计1次);
(3)实时统计每个单词的累积出现次数,并将结果保存到本地文件(每10s统计1次)
为了顺利进行实验,请一定一定要不要使用yarn模式来开启SparkShell,用本地模式来开启即可。其他我遇到的报错都在文末的实验总结中有说明。
1、编写一个简单程序,实现随机间隔若干秒在指定路径下创建新文件,并写入适量单词,并以空格分割,帮助完成单词统计任务。
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
* @author: 冰冷灬泡面
* @date: 2021/6/3 16:03
* @description:
* @modifiedBy:
*/
public class MyGenerator {
List<String> dictionary;
public static void main(String[] args) throws Exception{
if (args[0] == null) {
System.out.println("第一参数为空,停止运行");
return;
}
MyGenerator myGenerator = new MyGenerator();
myGenerator.myInit();
String line = null;
Random rd = new Random();
int cnt = 0;
//核心代码
while (true) {
int index = rd.nextInt(myGenerator.dictionary.size());
line = myGenerator