pyspark 针对 dataframe 如何遍历每一行数据?
推荐答案
可以先对 dataframe 对象进行 collect()
操作,它返回 <class 'list'>
类型,然后遍历 list 即可:
for row in df.collect():
print(row.id, row.query)
上述中的 row 是 <class 'pyspark.sql.types.Row'>
类型,获取某列的值,可以直接访问,如 row.id
、row['query']
。
完整的示例如下:
from pyspark.sql import SparkSession
spark_session = SparkSession.builder \
.appName('knowledgedict-dataframe') \
.master('local') \
.getOrCreate()
df = spark_session.createDataFrame(
schema=['id', 'query', 'cnt'],
data=[
(1, '北京房价', 3456),
(2, '三亚旅游', 789),
(3, '美国大选', 12)
]
)
df.show()
dfc = df.collect()
print(type(dfc))
for row in dfc:
print(type(row), row, row.id, row['query'])