如何访问Iterable元组(Scala)中的元素
我正在使用Scala创建一个应用程序,我正在努力理解一些事情 我的第一个问题是关于可数元组的: Iterable元组和Normal元组之间的区别是什么?何时以及如何使用它们 第二,关于我的申请更具体: 我有一个RDD,它有以下表格:如何访问Iterable元组(Scala)中的元素,scala,filter,tuples,rdd,Scala,Filter,Tuples,Rdd,我正在使用Scala创建一个应用程序,我正在努力理解一些事情 我的第一个问题是关于可数元组的: Iterable元组和Normal元组之间的区别是什么?何时以及如何使用它们 第二,关于我的申请更具体: 我有一个RDD,它有以下表格: (双精度,双精度),Iterable[(字符串,字符串)] 1st元组是键,而2nd包含一些值 现在让我们假设我想对我的RDD执行一个.filter()方法,使用第二个元组中的第一个元素。为此,我编写了如下代码: val filteredRDD = oldRDD.f
(双精度,双精度),Iterable[(字符串,字符串)]
1st元组是键,而2nd包含一些值
现在让我们假设我想对我的RDD执行一个.filter()方法,使用第二个元组中的第一个元素。为此,我编写了如下代码:
val filteredRDD = oldRDD.filter{ case ((key,value)) => value.filter(x => x._1 == "some_string") }
- 键:是指第一个元组:(双精度,双精度)
- 值:是指第二个元组:Iterable[(字符串,字符串)]
val filteredRDD = oldRDD.filter{ case ((key,value)) => key._1 == 5.4 }
一切正常
那么,基于第二元组的第一个元素的filter()方法的正确方法是什么
非常感谢你,如果这听起来太愚蠢,请原谅。我不熟悉这种编码语言 您的rdd包含一个元组和一个元组的iterable?您需要首先选择第一个元素iterable,这意味着它是元组的集合,这意味着有很多元组。其次,RDD上的
过滤器
需要一个函数,该函数接收集合的一个元素并返回一个布尔值,该布尔值确定哪些元素应保留在返回的集合中,哪些元素不保留在返回的集合中。然后在内部调用另一个过滤器
,这次是在Iterable上调用,然后再次调用过滤器
,它将返回另一个Iterable,但第一个过滤器
需要一个布尔值。你到底想做什么?filtereddd=oldRDD.filter{case((key,value))=>value.filter(x=>x.next()。_1==“some_string”)}@ariscant有很多种方法。。。如果需要集合的第一个元素,请使用head
。如果需要最后一个元素,请使用last
。如果需要第三个元素,请使用apply(3)
。或者,您希望确保对于某些谓词持有的所有元素,都使用forall
,或者您可能只关心是否至少有一个元素满足谓词use。这真的取决于你想做什么。你的rdd包含一个元组和一个元组的iterable?你需要首先选择第一个elementIterable,这意味着它是一个元组的集合,这意味着有很多元组。其次,RDD上的过滤器
需要一个函数,该函数接收集合的一个元素并返回一个布尔值,该布尔值确定哪些元素应保留在返回的集合中,哪些元素不保留在返回的集合中。然后在内部调用另一个过滤器
,这次是在Iterable上调用,然后再次调用过滤器
,它将返回另一个Iterable,但第一个过滤器
需要一个布尔值。你到底想做什么?filtereddd=oldRDD.filter{case((key,value))=>value.filter(x=>x.next()。_1==“some_string”)}@ariscant有很多种方法。。。如果需要集合的第一个元素,请使用head
。如果需要最后一个元素,请使用last
。如果需要第三个元素,请使用apply(3)
。或者,您希望确保对于某些谓词持有的所有元素,都使用forall
,或者您可能只关心是否至少有一个元素满足谓词use。这真的取决于你想做什么。