从Apache Spark中的数据框生成所有可能的组合

时间:2018-10-10 09:58:54

标签: scala apache-spark dataframe

我正在尝试做一些非常简单的事情,其中​​有2个数组已转换为数据框,并且我想显示所有可能的组合。例如,目前我的输出如下所示:

+-----------+-----------+
|         A |         B |
+-----------+-----------+
|     First |         T |
|    Second |         P |
+-----------|-----------+

但是我真正想要的是这个

+-----------+-----------+
|         A |         B |
+-----------+-----------+
|     First |         T |
|     First |         P |
|    Second |         T |
|    Second |         P |
+-----------|-----------+

到目前为止,我已经有了一些相当简单的代码来将数组映射到列中,但是对于同时使用Scala和Spark来说还很陌生,我不确定如何抓取所有这些组合。这是我到目前为止的内容:

val firstColumnValues = Array("First", "Second")
val secondColumnValues = Array("T", "P")

val xs = Array(firstColumnValues, secondColumnValues).transpose
val mapped = sparkContext.parallelize(xs).map(ys => Row(ys(0), ys(1)))
val df = mapped.toDF("A", "B")

df.show

...

case class Row(first: String, second: String)

在此先感谢您的帮助

1 个答案:

答案 0 :(得分:2)

在Spark 2.3中

val firstColumnValues = sc.parallelize(Array("First", "Second")).toDF("A")
val secondColumnValues = sc.parallelize(Array("T", "P")).toDF("B")
val fullouter = firstColumnValues.crossJoin(secondColumnValues).show