如何在Spark中找到RDD的长度

Abh*_*hek 3 hadoop scala apache-spark

如何找到以下RDD的长度?

var mark = sc.parallelize(List(1,2,3,4,5,6))

scala> mark.map(l => l.length).collect
<console>:27: error: value length is not a member of Int
   mark.map(l => l.length).collect
Run Code Online (Sandbox Code Playgroud)

SCo*_*uto 6

首先,你应该明确你想要什么。在您的 examplek 中,您正在运行一个 map 函数,因此看起来您正在尝试获取 RDD 的每个字段的长度,而不是 RDD 的大小。

sc.textFile将所有内容加载为Strings,因此您可以在每个字段上调用 ​​length 方法。Paralellize 将信息并行化为 Int,因为您的列表由整数组成。

如果你想要一个 RDD 的大小,你应该在 RDD 上运行计数,而不是在每个字段上

mark.count()
Run Code Online (Sandbox Code Playgroud)

这将返回 6

如果您想要每个元素的大小,您可以String根据需要将它们转换为,但这看起来像是一个奇怪的要求。它会是这样的:

mark.map(l => l.toString.length).collect
Run Code Online (Sandbox Code Playgroud)