有没有办法加快Spark中爆炸功能的执行速度?

时间:2019-05-29 21:26:01

标签: python apache-spark pyspark

我正在执行ETL Spark脚本,该脚本适用于JSON文件。在这些文件中,有许多数组,我通过pyspark.sql.functions.explode固有地将其爆炸以创建标准2D表。但是,有一些数组的大小很大,当我爆炸它们时,执行它需要很长时间(大约30分钟)。

是否可以通过配置SparkSession或仅使用某些其他功能来加快此速度?

示例代码:

import pyspark.sql.functions as f

# df is a Spark dataframe with ArrayType column `large_array_column`
df.select(f.explode("large_array_column")).write.format("orc").save("test.orc")

提供更多有关尺寸分布的信息:

df.select(f.size("large_array_column").alias("array_size")). \
 orderBy(f.desc("array_size")).show(20, False)

+----------+
|array_size|
+----------+
|19571     |
|17478     |
|11183     |
|10836     |
|9345      |
|7254      |
|7198      |
|6409      |
|4761      |
|4012      |
|3434      |
|3396      |
|2815      |
|2674      |
|2259      |
|2094      |
|1998      |
|1858      |
|1797      |
|1657      |
+----------+

如您所见,这些数组根本没有那么大,但是展开此数组列并将其保存到新文件中大约需要花费大约2倍的时间。 30分钟。

0 个答案:

没有答案