使用scala和spark对多维元组进行约简
尝试使用scala在多维列表上还原ByKey,以便元组被附加到父元组,从而生成多维元组 在python中,我尝试将其添加到多维列表中,如下所示,它工作得非常好:使用scala和spark对多维元组进行约简,scala,apache-spark,spark-streaming,reducers,Scala,Apache Spark,Spark Streaming,Reducers,尝试使用scala在多维列表上还原ByKey,以便元组被附加到父元组,从而生成多维元组 在python中,我尝试将其添加到多维列表中,如下所示,它工作得非常好: .map(lambda z:(z[1][0][1],[[z[1][0][1],str(z[1][0][2]),str(z[1][0][3]),z[1][0][0].strftime('%Y-%m-%dT%H:%M:%SZ'),z[1][1]]])).reduceByKey(lambda a,b:a+b) 但在scala中,我无法使用r
.map(lambda z:(z[1][0][1],[[z[1][0][1],str(z[1][0][2]),str(z[1][0][3]),z[1][0][0].strftime('%Y-%m-%dT%H:%M:%SZ'),z[1][1]]])).reduceByKey(lambda a,b:a+b)
但在scala中,我无法使用reduceByKey,我尝试以下操作:
.map(t => (t._2._1._2,((t._2._1._2,t._2._1._3,t._2._1._4,t._2._1._1,t._2._2)))).reduceByKey(t,y => t++y)
任何正确方向的提示都是欢迎的 与Python
Tuple
不同,ScalaTuple*
不是一个集合。这是一个好主意。从技术上讲,它代表了一组可能不均匀的值的n倍笛卡尔积。Scala元组不能连接,并且不能包含超过22个元素
如果您想收集每个键的值,您应该使用某种类型的收集,或者更好的groupByKey
另请参见:Scala
Tuple*
,与PythonTuple
不同,它不是一个集合。这是一个好主意。从技术上讲,它代表了一组可能不均匀的值的n倍笛卡尔积。Scala元组不能连接,并且不能包含超过22个元素
如果您想收集每个键的值,您应该使用某种类型的收集,或者更好的groupByKey
另请参见:您能举个例子吗?您能举个例子吗?