首页 > 解决方案 > 如何对大数据框进行子集化以加快执行速度?

问题描述

我有一个大型数据集加载到数据框中。

tbl = glueContext.create_dynamic_frame.from_catalog(
    database="db", 
    table_name="tbl"
)

我正在 Jupyter Notebook 中与 Glue/Spark 端点进行实验性地处理这些数据。

因此,不需要在完整数据上运行很多命令,但一小部分就足够了。

所以我尝试了这个fx:

tbls = tbl.toDF().randomSplit([0.01,199.9], 42)

但是在小子集上工作tbls[0]似乎并没有明显提高性能。

a = time.time()
cnt = oivvs[0].count()
b = time.time()
print(f"cnt = {cnt} / {b-a} sec")

-> cnt = 2252 / 72.31371855735779 sec

a = time.time()
cnt = oivvs[1].count()
b = time.time()
print(f"cnt = {cnt} / {b-a} sec")

-> cnt = 45578867 / 77.46211075782776 sec

我怀疑原因与表达式的惰性求值有关。我想目标是创建一个深层副本。

有任何想法吗?

标签: python-3.xapache-sparkpysparkapache-spark-sqlaws-glue

解决方案


推荐阅读