给我一个spark程序
时间: 2023-10-27 15:14:16 浏览: 79
这里是一个简单的Spark程序,用于计算一个文本文件中所有单词出现的次数:
```scala
import org.apache.spark.{SparkConf, SparkContext}
object WordCount {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("Word Count")
val sc = new SparkContext(conf)
val inputFile = args(0)
val outputFile = args(1)
val input = sc.textFile(inputFile)
val words = input.flatMap(line => line.split(" "))
val counts = words.map(word => (word, 1)).reduceByKey(_ + _)
counts.saveAsTextFile(outputFile)
}
}
```
这个程序做了以下几件事情:
1. 创建了一个SparkConf对象,指定了应用程序的名称。
2. 创建了一个SparkContext对象,用于连接到Spark集群。
3. 从命令行参数中获取输入文件和输出文件的路径。
4. 使用SparkContext的textFile方法读取输入文件中的每一行。
5. 使用flatMap方法将每一行拆分成单词。
6. 使用map方法将每个单词映射为一个键值对,其中键是单词本身,值是1。
7. 使用reduceByKey方法对相同单词的键值对进行合并,计算每个单词出现的次数。
8. 使用saveAsTextFile方法将结果保存到输出文件中。
这个程序可以通过以下命令在Spark集群上运行:
```
spark-submit --class WordCount --master yarn myapp.jar input.txt output.txt
```
其中,myapp.jar是打包好的程序包,input.txt是输入文件路径,output.txt是输出文件路径。
阅读全文