写一个spark Wordcount代码
时间: 2023-03-10 10:39:45 浏览: 91
val textFile = sc.textFile("hdfs://...")
val counts = textFile.flatMap(line => line.split(" "))
.map(word => (word, 1))
.reduceByKey(_ + _)
counts.saveAsTextFile("hdfs://...")
相关问题
spark wordcount代码详解
下面是一个简单的Spark WordCount程序:
```python
from pyspark import SparkConf, SparkContext
conf = SparkConf().setAppName("WordCount")
sc = SparkContext(conf=conf)
text_file = sc.textFile("hdfs://localhost:9000/input/sample.txt")
words = text_file.flatMap(lambda line: line.split(" "))
word_counts = words.map(lambda word: (word, 1)).reduceByKey(lambda a, b: a + b)
word_counts.saveAsTextFile("hdfs://localhost:9000/output/wordcount")
```
程序的功能是统计一个文本文件中每个单词出现的次数,并将结果保存到HDFS上。
下面是代码的详细解释:
首先,我们导入了`SparkConf`和`SparkContext`。这两个类是Spark的核心类,`SparkConf`用于配置Spark应用程序的属性,`SparkContext`用于连接Spark集群。
```python
from pyspark import SparkConf, SparkContext
```
接下来,我们创建了一个`SparkConf`实例,并给应用程序命名为`WordCount`。我们还创建了一个`SparkContext`实例,并将`SparkConf`传递给它。这些代码将初始化Spark应用程序并连接到Spark集群。
```python
conf = SparkConf().setAppName("WordCount")
sc = SparkContext(conf=conf)
```
然后,我们使用`textFile()`方法从HDFS中读取输入文件,并创建一个RDD(弹性分布式数据集)。
```python
text_file = sc.textFile("hdfs://localhost:9000/input/sample.txt")
```
接下来,我们使用`flatMap()`方法将每行文本拆分成单词,并创建一个新的RDD。
```python
words = text_file.flatMap(lambda line: line.split(" "))
```
然后,我们使用`map()`方法将每个单词转换为一个`(单词, 1)`的键值对,并创建一个新的RDD。
```python
word_counts = words.map(lambda word: (word, 1))
```
接下来,我们使用`reduceByKey()`方法对每个单词的计数进行聚合,并创建一个新的RDD。
```python
word_counts = word_counts.reduceByKey(lambda a, b: a + b)
```
最后,我们使用`saveAsTextFile()`方法将结果保存到HDFS上,并指定输出目录。
```python
word_counts.saveAsTextFile("hdfs://localhost:9000/output/wordcount")
```
这就是完整的Spark WordCount程序。
写个spark wordcount 的 demo
好的,以下是一个简单的Spark WordCount Demo:
```java
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import java.util.Arrays;
import java.util.regex.Pattern;
public class SparkWordCount {
private static final Pattern SPACE = Pattern.compile(" ");
public static void main(String[] args) {
// 创建SparkConf对象
SparkConf conf = new SparkConf().setAppName("WordCount").setMaster("local");
// 创建JavaSparkContext对象
JavaSparkContext sc = new JavaSparkContext(conf);
// 读取本地文件,以行为单位读取
JavaRDD<String> lines = sc.textFile("file:///path/to/your/file");
// 分割每一行,得到所有单词,空格作为分隔符
JavaRDD<String> words = lines.flatMap(line -> Arrays.asList(SPACE.split(line)).iterator());
// 计算每个单词的数量
JavaRDD<String> wordCounts = words.mapToPair(word -> new Tuple2<>(word, 1))
.reduceByKey((x, y) -> x + y)
.map(t -> t._1() + ": " + t._2());
// 打印结果
wordCounts.foreach(System.out::println);
// 关闭JavaSparkContext对象
sc.close();
}
}
```
你可以将代码中的 `file:///path/to/your/file` 替换为你自己的文件路径,然后运行这个程序即可得到单词出现次数统计结果。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)