JDBCRDD
可能已进行分区,以便在数据库上进行高效的查询并行化。
有没有办法将如何数据分区作为下一阶段的有用提示,可能是groupBy
,而不必重新分配数据?
示例:我正在加载日期/区域/值。使用JDBCRDD
我正在加载按日期分区的数据。如果我想减少/ groupBy日期和区域,我不应该再对日期进行排序和改组,并利用RDD已按日期分区的事实。
在伪API中,我会做如下的事情:
RDD rdd = new JDCBCRDD ...
Partitioner partitioning = (Row r)->p(r)
rdd.assertPartitioning(partitioning);
RDD<Pair<Key,Row>> rdd2 = rdd.groupWithinPartition((r)->f(r),Rowoperator::sum);
所以现在理论上,我的所有分组都要执行JVM实例本地,同一节点,相同的JVM,相同的线程。