以下是一个简单的 Apache Spark Streaming 示例,演示如何从 TCP socket 中读取实时数据,计算每个时间窗口内单词的出现次数,并输出结果。请注意,为了运行这个示例,你需要先运行一个 TCP 服务器来提供实时数据流。
from pyspark.streaming import StreamingContext

# 创建本地 StreamingContext,每隔2秒处理一次数据
ssc = StreamingContext("local[2]", "SparkStreamingExample", 2)

# 从TCP socket读取数据流
lines = ssc.socketTextStream("localhost", 9999)

# 执行一些简单的转换操作,这里是按空格拆分每行,并统计单词出现的次数
word_counts = lines.flatMap(lambda line: line.split(" ")) \
                   .map(lambda word: (word, 1)) \
                   .reduceByKey(lambda x, y: x + y)

# 输出结果到控制台
word_counts.pprint()

# 启动StreamingContext
ssc.start()

# 等待终止
ssc.awaitTermination()

在这个示例中,Spark Streaming 将每个时间窗口内的数据流拆分成单词,然后使用 reduceByKey 操作计算每个单词的出现次数,并通过 pprint() 输出到控制台。你可以通过启动一个 TCP 服务器,并确保它监听在 localhost 的 9999 端口上,以便 Spark Streaming 可以连接并接收实时数据。

在运行这个示例之前,请确保你已经正确安装了 Spark 并启动了 Spark Streaming 上下文。你可以使用以下命令在终端中运行示例:
spark-submit your_script_name.py

请将 your_script_name.py 替换为包含上述代码的 Python 脚本的文件名。同时,请确保在运行脚本之前,TCP 服务器已经启动并正在发送数据。


转载请注明出处:http://www.zyzy.cn/article/detail/9344/Spark