我正在尝试做一些非常简单的事情,其中有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)
在此先感谢您的帮助
答案 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