我有一个迭代优化过程,其中包括在相对较大的数据帧(700000行)上的一些pyspark查询(具有参数)。我的问题涉及toPandas()的使用以及我的结构是否可以改进。该过程如下:
给出:查询的初始参数集
初始步骤:加载数据并转换为pyspark数据框(df_spark = spark.createDataFrame(data))
运行x次迭代:
Step 1. execute some queries on df_spark (using current set of parameters)
--> result is a new dataframe ("new_frame_spark")
Step 2. transform "new_frame_spark" to pandas using toPandas()
Step 3. perform a few calculations on new_frame
--> result is a single number ("result_number")
Step 4. Based on "result_number", change current set of parameters and start over with Step 1.
总体而言,该过程运行良好,但是第2步是一个大问题,因为此转换需要大量时间。我也尝试过在“ new_frame_spark”上执行第3步,然后使用collect()将结果数字“ result_number”转换为numpy。不幸的是,这花费了很长时间。
有什么办法可以加快程序速度吗?
非常感谢您!