一、前言
Spark 是一个快速、通用的大规模数据处理和分析的开源集群计算框架,它能够在内存中进行高效的数据处理。本文将在 Windows 系统中,使用 Java 操作 Spark(loacl模式) 处理一个简单的文本文件,进行词频统计。另外,本文会提供针对语言模型的Prompt,以便于灵活使用。
二、数据准备
- 准备一份 txt 文件
Prompt:请提供一份用于 Spark 词频统计的文本内容。
三、引入 Spark 依赖
- 创建一个 Maven 项目,补充 spark-core 依赖。
适用于 spark 3.5.4 版本的 spark-core maven 的坐标是什么?
四、编写词频统计代码
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import scala.Tuple2;
import java.util.Arrays;
/**
* 词频统计!
*
*/
public class App
{
public static void main( String[] args )
{
// 创建 Spark 配置对象
SparkConf conf = new SparkConf()
.setAppName("WordCount")
.setMaster("local");// 使用本地所有可用核心
// 创建 JavaSparkContext 对象
JavaSparkContext sc = new JavaSparkContext(conf);
// 读取文件,将文件内容转换为 RDD
JavaRDD<String> lines = sc.textFile("spark-test.txt"); // 替换为实际文件路径
// 将每行拆分为单词
JavaRDD<String> words = lines.flatMap(line -> Arrays.asList(line.split(" ")).iterator());
// 将每个单词映射为 (word, 1) 的键值对
JavaPairRDD<String, Integer> wordPairs = words.mapToPair(word -> new Tuple2<>(word, 1));
// 按单词进行聚合,计算词频
JavaPairRDD<String, Integer> wordCounts = wordPairs.reduceByKey((a, b) -> a + b);
// 打印词频统计结果
wordCounts.collect().forEach(System.out::println);
// 关闭 SparkContext
sc.close();
}
}