从 S3 读取到 Spark 时过滤数据

Filtering data while reading from S3 to Spark

我们正在迁移到 AWS EMR/S3 并使用 R 进行分析(sparklyr 库)。我们在 S3 中有 500gb 的销售数据,其中包含多个产品的记录。我们想要分析几个产品的数据,并且只想将文件的子集读入 EMR。

到目前为止,我的理解是 spark_read_csv 将提取所有数据。 R/Python/Hive 有没有办法只读取我们感兴趣的产品的数据?

简而言之,格式的选择是在有效频谱的另一边。

使用数据

  • 按感兴趣的(DataFrameWriter 或正确目录结构的partitionBy 选项)分区。
  • 在感兴趣的列上按(DataFrameWriter 和持久性元存储的bucketBy 选项聚集。
在某些情况下,

可以帮助将搜索范围缩小到特定分区,但如果 filter(product == p1) 具有高度选择性,那么您可能会使用错误的工具。

根据要求:

  • 合适的数据库。
  • Hadoop 上的数据仓库。

可能是更好的选择。

您还应该考虑选择更好的存储格式(如 Parquet)。