从 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)。
我们正在迁移到 AWS EMR/S3 并使用 R
进行分析(sparklyr
库)。我们在 S3 中有 500gb 的销售数据,其中包含多个产品的记录。我们想要分析几个产品的数据,并且只想将文件的子集读入 EMR。
到目前为止,我的理解是 spark_read_csv
将提取所有数据。 R/Python/Hive
有没有办法只读取我们感兴趣的产品的数据?
简而言之,格式的选择是在有效频谱的另一边。
使用数据
- 按感兴趣的(
DataFrameWriter
或正确目录结构的partitionBy
选项)分区。 - 在感兴趣的列上按(
DataFrameWriter
和持久性元存储的bucketBy
选项聚集。
可以帮助将搜索范围缩小到特定分区,但如果 filter(product == p1)
具有高度选择性,那么您可能会使用错误的工具。
根据要求:
- 合适的数据库。
- Hadoop 上的数据仓库。
可能是更好的选择。
您还应该考虑选择更好的存储格式(如 Parquet)。