Apache spark 如何在ApacheSpark中执行动态重新分配?
让我们假设这样一种情况:我们必须在过滤后重新划分数据集,或者实现并行度 如何执行动态重新分区,而不是手动调整分区数 注意:RDD、数据帧和数据集的解决方案 可以使用重新分区(colname)或partitionBy()对数据集进行动态分区 例如,如果您的数据集如下所示Apache spark 如何在ApacheSpark中执行动态重新分配?,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,让我们假设这样一种情况:我们必须在过滤后重新划分数据集,或者实现并行度 如何执行动态重新分区,而不是手动调整分区数 注意:RDD、数据帧和数据集的解决方案 可以使用重新分区(colname)或partitionBy()对数据集进行动态分区 例如,如果您的数据集如下所示 create table sensor_data ( sensor_id bigint, temp float, region_id string, state string, country st
create table sensor_data (
sensor_id bigint,
temp float,
region_id string,
state string,
country string
) partition by ( day string)
如果你想对某一天进行区域计算
val sensor_data = spark.sql("select * from sensor_data where day='2018-02-10')
val results = sensor_data.
repartition(col("region_id")).
mapPartitions( eventIter => {
processEvent(eventIter).iterator
})
case Event(sensor_id: String, country: String, max_temp: float)
def processEvent(evtIter: Iterator[Row]) : List[Event] = {
val maxTempEvents = ListBuffer[Event]()
while (evtIter.hasNext) {
val evt = evtIter.next()
// do your calculation and add results to maxTempEvents list
}
maxTempEvents
}
希望这有帮助
谢谢
拉维如果你能举个例子就好了。非常感谢,如果你能回答下面的问题就太有帮助了-