apache-spark - 从小数据集中制作多个数据框的最快方法
问题描述
我需要从一个查询生成的小数据集(145k 行)中创建n 个collect()
表,我尝试过的方法是使用and cache()
,但collect()
最终比cache()
(5 秒对 30 秒......)
我正在使用的示例。
搜集():
df = spark.sql(query).collect()
list_a = [Row(col1=i['col1']) for i in df if i['col2'] == 'test']
list_b = [Row(col1=i['col1']) for i in df if i['col2'] == 'derp']
缓存():
df=spark.sql(query)
df.cache()
list_a = df.filter(df['col2'] == 'test').select('col1').collectAsList()
list_b = df.filter(df['col2'] == 'derp').select('col1').collectAsList()
还有另一种比 更快的方法collect()
吗?对于小型数据集更好还是因为某些原因不值得
?collect()
解决方案
推荐阅读
- r - 根据行中最大值和最小值之间的差异过滤R中的矩阵
- angular - WebSSO Spring + Angular 重定向-uri
- jwt - 如何为 Docusign JWT 授权创建/下载 p12 格式的 RSA 密钥
- python - 为什么在具有 2.5 亿行的数据框中搜索/评估对象列非常慢?
- logstash - 如何在 elastic.co 上找到 logstash 错误日志?
- selenium - 如何在 Selenium 中验证该文件是否成功下载?
- java - 如何在json输出中将Double转换为字符串
- python-3.x - 赋值前引用的局部变量“类型”
- java - Java中基于某些条件的字符串截断
- html - 未应用 CSS 样式