我在Spark Scala中使用了笛卡尔变换。如果我输入由4个元素(可以是数字/符号/元组)说Scala中的笛卡尔变换中的显式排序Spark
var myRDD=sc.parallelize(Array("e1","e2","e3","e4"))
myRDD.cartesian(myRDD)会产生对所有可能的组合,但不一定秩序。什么是聪明的方式来获得这些对订单?即
Array((e1,e1), (e1,e2), (e1,e3), (e1,e4), (e2,e1), (e2,e2), (e2,e3), (e2,e4), (e3,e1), (e3,e2), (e3,e3), (e3,e4), (e4,e1), (e4,e2), (e4,e3), (e4,e4))
你需要什么样的顺序?更重要的是,为什么你需要这个命令? –
我有一组坐标(x,y,z),我需要计算它们之间的RMSD距离。我使用笛卡儿变换来获得坐标对前。 ((C1,C2),(C1,C3),...)。顺序很重要,所以我知道哪个距离属于哪一对。 –
我认为最好的方法是用索引压缩每个点,以便稍后识别它们,而不是排序,这将需要您将所有数据收集到主数据库中。想想这个,可能的组合将是巨大的!他们可能不适合记忆! –