【问题标题】:Filtering parquet file on read with PySpark使用 PySpark 在读取时过滤镶木地板文件
【发布时间】:2020-03-14 23:55:08
【问题描述】:

我有一个存储在 AWS s3 中的大量分区 parquet 文件数据集,我想使用 AWS EMR 从每个月的数据中读取一个样本。我必须通过值“user_id”过滤每个月的数据,例如选择来自 100.000 个用户(数百万)的数据并将聚合写回 s3。

我想出了如何使用 EMR 集群读写 s3,但我在一个非常小的数据集上进行了测试。对于真实的数据集,我需要过滤数据才能对其进行处理。如何使用 pyspark 做到这一点?

【问题讨论】:

  • 您想要过滤的那 100.000 个用户存储在集合、数据框中,还是您只想要一些随机用户?
  • 我实际上不是将它们存储为用户,而是用户执行的事件。我已经编写了一个脚本来将此事件级文件转换为用户级表,但现在我面临从分区拼花文件读取的问题

标签: python-3.x amazon-web-services apache-spark pyspark-sql amazon-emr


【解决方案1】:

Spark 有多个采样转换。 df.sample(...) 是您想要的那个。见this answer

如果您需要返回确切数量的结果,则必须 (a) 稍微过度采样,然后 (b) 使用 df.limit() 来获得确切数量。

如果您只能处理一小部分,而不是目标计数,则可以保存df.count

【讨论】:

  • 谢谢,这个答案足以满足我的要求,尽管我的问题演变为我所问的更具体的版本。无论如何谢谢:)
猜你喜欢
  • 2018-08-13
  • 2022-06-16
  • 2021-03-19
  • 2021-11-10
  • 2017-12-25
  • 1970-01-01
  • 2018-05-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多