Python PySpark中的映射分区

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

我对Python非常陌生,对语法也不是很熟悉。我正在研究pyspark mappartitions方法的一些示例实现。为了更好地表达ask,我编写了与我所需要的Java等价物

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中注释了该部分,但我确实有它。我不必显式地传递它,因为它具有正确的作用域。