【发布时间】:2018-11-09 17:26:24
【问题描述】:
我们正在迁移到 AWS EMR/S3 并使用 R 进行分析(sparklyr 库)。我们在 S3 中有 500gb 的销售数据,其中包含多个产品的记录。我们想要分析几个产品的数据,并且只想将文件的子集读取到 EMR 中。
到目前为止,我的理解是spark_read_csv 将提取所有数据。 R/Python/Hive 有没有办法只读取我们感兴趣的产品的数据?
【问题讨论】:
-
read_csv()不会在传统意义上“拉入所有数据”——spark 是惰性的,所以在你执行一个动作之前什么都不会做。阅读后跟filter()可能是你想去这里的方式。 -
如果您的数据集按产品或 pdct 系列进行了分区,则只会访问与您的 WHERE 子句匹配的“目录”。这就是它在 Hadoop 和其他任何地方的工作方式(因为 20 年前 Oracle 8i 引入了这个概念......)
-
执行 read_csv 不应该已经将整个数据加载到 HDFS 中吗?我知道 spark_read_csv 可以从 S3 读取文件并将其放入 hdfs。如果我将该命令通过管道传递给过滤器,它会起作用吗?所以本质上 - spark_read_csv(cs, sales.csv, memory = F) %>% filter(product == p1) ?我有文本文件形式的数据,每个文件都包含一年的数据。我不确定在将数据从 S3 拉入 EMR 时如何使用分区概念。你能澄清一下吗?
标签: r hive pyspark amazon-emr sparklyr