mapPartitionsWithIndex查看分区内的前2条数据

# 只能用yeild,如果使用return将返回结果进行字符拆分,原因还不清楚。

from pyspark.sql import SparkSession,Row

spark = SparkSession.builder.appName("get_app_category").enableHiveSupport().
    config("spark.driver.host", "localhost").config("spark.debug.maxToStringFields", "100").getOrCreate()
df = spark.createDataFrame([('数学', '张三', 88), ('语文', '张三', 92), ('英语', '张三', 77),
                            ('数学', '王五', 65), ('语文', '王五', 87), ('英语', '王五', 90),
                            ('数学', '李雷', 67), ('语文', '李雷', 33), ('英语', '李雷', 24),
                            ('数学', '宫九', 77), ('语文', '宫九', 87), ('英语', '宫九', 90)
                            ], ['cat', 'name', 'score'])

def f(idx,iter):
    nums =[]
    for i in iter:
        nums.append(i)
        if len(nums)==2:
            break
    yield str(idx) + '---' + str(nums)

res = df.rdd.mapPartitionsWithIndex(f).collect()
print(res)
原文地址:https://www.cnblogs.com/muyue123/p/13219591.html