【发布时间】:2018-08-20 20:23:21
【问题描述】:
我正在 Scala-Spark 中尝试以下内容。
我希望有人能给我一些关于如何解决这个问题的指导,或者为我提供一些资源来弄清楚我能做什么。
我有一个dateCountDF,其计数对应于日期。我想从另一个数据帧entitiesDF 中为每个dateCountDF.month 随机选择一定数量的条目,其中dateCountDF.FirstDate<entitiesDF.Date && entitiesDF.Date <= dateCountDF.LastDate 然后将所有结果放入一个新的数据帧中。 请参阅下面的数据示例
我完全不确定如何从 Spark-SQl 或 Spark-MapReduce 的角度解决这个问题。我得到的最远的方法是天真的方法,我在数据帧上使用foreach,然后在函数中引用另一个数据帧。但这不起作用,因为 Spark 的分布式特性。
val randomEntites = dateCountDF.foreach(x => {
val count:Int = x(1).toString().toInt
val result = entitiesDF.take(count)
return result
})
数据帧
**dateCountDF**
| Date | Count |
+----------+----------------+
|2016-08-31| 4|
|2015-12-31| 1|
|2016-09-30| 5|
|2016-04-30| 5|
|2015-11-30| 3|
|2016-05-31| 7|
|2016-11-30| 2|
|2016-07-31| 5|
|2016-12-31| 9|
|2014-06-30| 4|
+----------+----------------+
only showing top 10 rows
**entitiesDF**
| ID | FirstDate | LastDate |
+----------+-----------------+----------+
| 296| 2014-09-01|2015-07-31|
| 125| 2015-10-01|2016-12-31|
| 124| 2014-08-01|2015-03-31|
| 447| 2017-02-01|2017-01-01|
| 307| 2015-01-01|2015-04-30|
| 574| 2016-01-01|2017-01-31|
| 613| 2016-04-01|2017-02-01|
| 169| 2009-08-23|2016-11-30|
| 205| 2017-02-01|2017-02-01|
| 433| 2015-03-01|2015-10-31|
+----------+-----------------+----------+
only showing top 10 rows
编辑:
为了澄清。
我的输入是entitiesDF 和dateCountDF。我想遍历dateCountDF 并且对于每一行我想在entitiesDF 中选择随机数量的实体@ 987654332@
【问题讨论】:
-
输入是什么,你想要什么输出可以再举例说明
-
@RahulNirdhar 谢谢拉胡尔。请参阅我添加的编辑。让我知道这是否可以澄清事情?
-
你得到了这个答案
标签: scala apache-spark apache-spark-sql apache-spark-dataset