python-3.x - 如何对大数据框进行子集化以加快执行速度?
问题描述
我有一个大型数据集加载到数据框中。
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
我怀疑原因与表达式的惰性求值有关。我想目标是创建一个深层副本。
有任何想法吗?
解决方案
推荐阅读
- sql-server - In Azure Logic Apps ARM template, what are the possible values for the AuthType property for a SQL Server connector using On-Premise Data Gateway?
- javascript - 在项目之间共享 JS 代码的另一种选择,然后是 yarn 工作区(monorepo)或公共/私有 npm 包
- asp.net-core - Swagger 对具有参数的控制器操作不显示任何参数
- java - 如何找到有效子集和最佳有效子集?
- firebase - 如何在不指定的情况下在 Firebase 上获取子集合?
- python - “不正确的字符串值:'\\xD8\\xB9\\xD8\\xB1\\xD8\\xA8...' 用于第 1 行的列 'soup'”。可以过滤 4 字节 utf-8 字符吗?
- python - 无需打开新的 matplotlib 窗口即可获取支持的文件格式列表
- linux - 共享组文件夹权限问题
- r - 如何在 R 中创建“动态”列?
- ffmpeg - ffmpeg - 在为 HLS 直播流生成 .ts 段时如何“设置”连续性计数器?