常见问题#

我应该使用 PySpark 的 DataFrame API 还是 Spark 上的 pandas API?#

如果您已经熟悉 pandas 并希望利用 Spark 处理大数据,我们推荐使用 Spark 上的 pandas API。如果您正在从头开始学习 Spark,我们建议您从 PySpark 的 API 开始。

Spark 上的 pandas API 支持结构化流 (Structured Streaming) 吗?#

不,Spark 上的 pandas API 官方不支持结构化流 (Structured Streaming)。

作为一种变通方法,您可以在结构化流 (Structured Streaming) 中使用带有 foreachBatch 的 pandas-on-Spark API,它允许批处理 API。

>>> def func(batch_df, batch_id):
...     pandas_on_spark_df = ps.DataFrame(batch_df)
...     pandas_on_spark_df['a'] = 1
...     print(pandas_on_spark_df)

>>> spark.readStream.format("rate").load().writeStream.foreachBatch(func).start()
                timestamp  value  a
0 2020-02-21 09:49:37.574      4  1
                timestamp  value  a
0 2020-02-21 09:49:38.574      5  1
...

Spark 上的 pandas API 与 Dask 有何不同?#

不同的项目有不同的侧重点。Spark 已经部署在几乎每个组织中,并且通常是存储在数据湖中的海量数据的主要接口。Spark 上的 pandas API 的灵感来源于 Dask,旨在让数据科学家轻松地从 pandas 过渡到 Spark。