Pyspark:与使用 pandas 创建数据帧相比,为啥使用 pyspark 创建数据帧需要更多时间 [重复]
Posted
技术标签:
【中文标题】Pyspark:与使用 pandas 创建数据帧相比,为啥使用 pyspark 创建数据帧需要更多时间 [重复]【英文标题】:Pyspark : Why does creating a dataframe using pyspark take more time as compared to creating a dataframe using pandas [duplicate]Pyspark:与使用 pandas 创建数据帧相比,为什么使用 pyspark 创建数据帧需要更多时间 [重复] 【发布时间】:2020-05-22 12:54:39 【问题描述】:我正在使用 pandas.read_csv()
从 8 MB 文件中创建数据框。
df_ratings = pd.read_csv(r'D:\Study\Lopa\TEDAX_RE\MOVIE_RECOMMENDATION\MOVIE_LENS\MONGO_DB\DATA\INPUT_DATA\ratings.csv')
list_users = df_ratings['userId'].unique().tolist()
print(list_users)
这需要 0.34 秒
使用火花
from pyspark.context import SparkContext
from pyspark.sql.session import SparkSession
sc = SparkContext('local[*]')
spark_df = spark.read.format('csv').options(header='true', inferSchema='true').load(r'D:\Study\Lopa\TEDAX_RE\MOVIE_RECOMMENDATION\MOVIE_LENS\MONGO_DB\DATA\INPUT_DATA\ratings.csv').cache()
spark_df.createOrReplaceTempView("user_table")
query = "SELECT DISTINCT userid FROM user_table"
list_users_data = spark.sql(query).collect()
list_users = [i.userid for i in list_users_data]
print(list_users)
这大约需要 16 秒。
与 Python Pandas 代码相比,Pyspark 代码花费的时间应该更少。 我是否缺少任何配置?
注意:我在具有 8GB RAM 4 核 CPU 系统的 Windows 系统中运行此代码。
spark = SparkSession(sc)
【问题讨论】:
你能发布两个输出吗? @Srinivas - 两个输出都是相同的。它是 1000 个用户 ID 的列表。[102524, 137501, 31367, 95994, 104688,.......] 【参考方案1】:与 Python Pandas 代码相比,Pyspark 代码花费的时间应该更少。
不,不应该。对于一个小数据集,大部分时间都是执行开销——启动驱动程序、启动工作程序、DAG 创建和执行。 Spark 应该用于处理大型数据集,它无法容纳在一台机器的内存中,因此您需要几个工人来处理它。如果您的数据足够小,一台服务器可以处理它 - 坚持使用 Pandas,您就不需要 Spark。
【讨论】:
以上是关于Pyspark:与使用 pandas 创建数据帧相比,为啥使用 pyspark 创建数据帧需要更多时间 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
通过 pyspark.sql.dataframe 将 XML 数据转换为 pandas 数据帧
将 pyspark pandas_udf 与 AWS EMR 一起使用时出现“没有名为‘pandas’的模块”错误
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换