ShS*_*ShS 0 scala for-comprehension apache-spark rdd
我正在尝试使用Spark-RDD等效的本地Scala代码:
val intList1=List(1,2,3,4,5,6)
val intList2=List(10,20,30,40,50,60)
val divisiblePairs=for(
int1<-intList1;
int2<-intList2
if int2 % int1 == 0
) yield(int1,int2)
divisiblePairs.groupBy(_._1) //Map(6 -> List((6,30), (6,60)),...)
Run Code Online (Sandbox Code Playgroud)
我试过了:
val intRDD1=sc.parallelize(List(1,2,3,4,5,6))
val intRDD2=sc.parallelize(List(10,20,30,40,50,60))
val divisiblePairs=
for(
int1<-intRDD1;
int2<-intRDD2
if int2 % int1 == 0
) yield(int1,int2)
Run Code Online (Sandbox Code Playgroud)
这需要一些额外的工作,但我得到错误,即使在理解的主体:
错误:类型不匹配; 发现:org.apache.spark.rdd.RDD [(Int,Int)]必需:TraversableOnce [?] int2 <-intList2
小智 5
错误是预期的,因为Spark不支持嵌套.您可以使用cartesian方法执行相同的操作:
for {
(int1, int2) <- intRDD1.cartesian(intRDD2)
if int2 % int1 == 0
} yield(int1, int2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
316 次 |
| 最近记录: |