gpt4 book ai didi

scala - Spark Streaming迭代算法

转载 作者:可可西里 更新时间:2023-11-01 17:01:42 25 4
gpt4 key购买 nike

我想创建一个用 Scala 编码的 Spark Streaming 应用程序。我希望我的应用程序:

  • 逐行读取 HDFS 文本文件
  • 将每一行分析为字符串,如果需要修改它,并且:
  • 将分析所需的状态保存在某种数据结构中(可能是哈希)
  • 在文本文件(任何类型)上输出所有内容

我在第一步中没有遇到任何问题:

val lines = ssc.textFileStream("hdfs://localhost:9000/path/")

我的分析包括在 Hashes 中搜索匹配项以查找分析的 String 的某些字段,这就是为什么我需要维护状态并迭代地执行该过程。这些Hashes中的数据也是通过分析的字符串提取出来的。

下一步我能做什么?

最佳答案

由于您只需逐行读取一个 HDFS 文本文件,您可能不需要为此使用 Spark Streaming。你可以只使用星火。

val lines = sparkContext.textFile("...")

然后就可以使用mapPartition对整个分区文件做分布式处理了。

val processedLines = lines.mapPartitions { partitionAsIterator => 
processPartitionAndReturnNewIterator(partitionAsIterator)
}

在该函数中,您可以遍历分区中的行,将状态内容存储在 HashMap 中等,最后返回与该分区对应的输出记录的另一个迭代器。

现在,如果您想要跨分区共享状态,那么您可能必须在 processedLines 数据集上进行更多聚合,例如 groupByKey() 或 reduceByKey()。

关于scala - Spark Streaming迭代算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23325397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com