Sparksql Pyspark CrossJoin超过维度/用于特定窗口

时间:2018-12-05 10:37:27

标签: apache-spark pyspark apache-spark-sql

这是我的数据框

console.log

我想对其进行转换,使其看起来像这样:

df = spark.createDataFrame([("A", "2018-01-05"), ("A", "2018-02-10"), ("B", "2018-08-11"), ("B", "2018-09-11")], ("ID", "date"))

因此,基本上,我需要执行crossJoin,但仅适用于与特定ID关联的值。这可能吗?有任何想法吗?也许通过窗口功能?

1 个答案:

答案 0 :(得分:1)

解决方案是

df.join(df, ["ID"]).toDF("id", "date1", "date2").show()

结果是

+---+----------+----------+                                                     
| id|     date1|     date2|
+---+----------+----------+
|  B|2018-08-11|2018-08-11|
|  B|2018-08-11|2018-09-11|
|  B|2018-09-11|2018-08-11|
|  B|2018-09-11|2018-09-11|
|  A|2018-01-05|2018-01-05|
|  A|2018-01-05|2018-02-10|
|  A|2018-02-10|2018-01-05|
|  A|2018-02-10|2018-02-10|
+---+----------+----------+