【发布时间】:2016-08-06 11:28:41
【问题描述】:
我有几个在 AWS S3 中生成 parquet 文件的 spark 作业。每隔一段时间,我需要对这些数据的给定日期范围运行一些临时查询。我不想在 spark 中执行此操作,因为我希望我们对 spark 不了解的 QA 团队能够执行此操作。我喜欢做的是启动一个 AWS EMR 集群并将 parquet 文件加载到 HDFS 并针对它运行我的查询。我已经弄清楚如何使用 hive 创建表并将其指向一个 s3 路径。但这将我的数据限制在一天。因为日期的每一天在
之类的路径下都有多个文件s3://mybucket/table/date/(parquet files 1 ... n).
所以问题之一是如何将多天的数据加载到配置单元中。即
s3://mybucket/table_a/day_1/(parquet files 1 ... n).
s3://mybucket/table_a/day_2/(parquet files 1 ... n).
s3://mybucket/table_a/day_3/(parquet files 1 ... n).
...
s3://mybucket/table_b/day_1/(parquet files 1 ... n).
s3://mybucket/table_b/day_2/(parquet files 1 ... n).
s3://mybucket/table_b/day_3/(parquet files 1 ... n).
我知道 hive 可以支持分区,但我的 s3 文件不是这样设置的。
我还研究了prestodb,它看起来是此类数据分析最喜欢的工具。它支持 ansi SQL 的事实使其成为具有 SQL 知识但对 hadoop 或 spark 知之甚少的人的绝佳工具。我确实在我的集群上安装了它,它工作得很好。但看起来你不能真正将数据加载到你的表中,你必须依靠 Hive 来完成这部分。这是使用 prestodb 的正确方法吗?我看了netflix presentation 关于他们使用 prestodb 和使用 s3 代替 HDFS 的内容。如果这很好用,但我想知道如何将数据移入内存。什么时候拼花文件将从 s3 移动到集群。我需要有可以将整个数据加载到内存中的集群吗?这一般是怎么设置的?
【问题讨论】:
-
AWS Athena 我猜是在提出这个问题后发布的?
标签: amazon-s3 apache-spark hive parquet presto