Python PySpark中的映射分区
我对Python非常陌生,对语法也不是很熟悉。我正在研究pyspark mappartitions方法的一些示例实现。为了更好地表达ask,我编写了与我所需要的Java等价物Python PySpark中的映射分区,python,apache-spark,pyspark,Python,Apache Spark,Pyspark,我对Python非常陌生,对语法也不是很熟悉。我正在研究pyspark mappartitions方法的一些示例实现。为了更好地表达ask,我编写了与我所需要的Java等价物 JavaRDD<Row> modified = auditSet.javaRDD().mapPartitions(new FlatMapFunction<Iterator<Row>, Row>() { public Iterator<Row> ca
JavaRDD<Row> modified = auditSet.javaRDD().mapPartitions(new FlatMapFunction<Iterator<Row>, Row>() {
public Iterator<Row> call(Iterator<Row> t) throws Exception {
Iterable<Row> iterable = () -> t;
return StreamSupport.stream(iterable.spliterator(), false).map(m -> enrich(m)).iterator();
}
private Row enrich(Row r) {
//<code to enrich row r
return RowFactory.create(/*new row from enriched row r*/);
}
});
JavaRDD modified=auditSet.JavaRDD().mapPartitions(新的FlatMapFunction(){
公共迭代器调用(迭代器t)引发异常{
Iterable Iterable=()->t;
返回StreamSupport.stream(iterable.spliterator(),false).map(m->rich(m)).iterator();
}
专用行(r行){
// 不确定这是否正确,但这就是我所做的。欢迎评论和更正
auditSetDF.rdd.mapPartitions(lambda itr:mpImpl(itr,locationListBrdcast))
def mpImpl(itr,broadcastList):
lst=broadcastList.value
for x in itr:
yield enrich(x,lst)
scala代码对您有用吗?谢谢,但正在寻找Python实现。我也可以做scala部分。如果解释了向下投票,这是有意义的。这样我可以在下一个问题上进行改进。我是否违反了一些规则?您能解释广播的原因吗?在Java版本中,这是不存在的。广播列表包含哪些内容以及它是如何使用的sed?广播列表是我在enrich()逻辑中使用的。我在Java中注释了该部分,但我确实有它。我不必显式地传递它,因为它具有正确的作用域。