Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 加载或指向多个拼花地板路径,以便使用hive或prestodb进行数据分析_Amazon S3_Apache Spark_Hive_Parquet_Presto - Fatal编程技术网

Amazon s3 加载或指向多个拼花地板路径,以便使用hive或prestodb进行数据分析

Amazon s3 加载或指向多个拼花地板路径,以便使用hive或prestodb进行数据分析,amazon-s3,apache-spark,hive,parquet,presto,Amazon S3,Apache Spark,Hive,Parquet,Presto,我有两个spark工作,在AWS S3中生成拼花文件。每隔一段时间,我需要对这些数据的给定日期范围运行一些特别的查询。我不想在spark中这样做,因为我希望我们不了解os spark的QA团队能够做到这一点。我喜欢做的是启动一个AWS EMR集群,将拼花地板文件加载到HDFS中,并对其运行我的查询。我已经了解了如何使用配置单元创建表,并将其指向一个s3路径。但这就把我的数据限制在一天之内。因为日期的每一天都有多个文件,路径如下 s3://mybucket/table/date/(拼花文件1…n)

我有两个spark工作,在AWS S3中生成拼花文件。每隔一段时间,我需要对这些数据的给定日期范围运行一些特别的查询。我不想在spark中这样做,因为我希望我们不了解os spark的QA团队能够做到这一点。我喜欢做的是启动一个AWS EMR集群,将拼花地板文件加载到HDFS中,并对其运行我的查询。我已经了解了如何使用配置单元创建表,并将其指向一个s3路径。但这就把我的数据限制在一天之内。因为日期的每一天都有多个文件,路径如下

s3://mybucket/table/date/(拼花文件1…n)。

所以问题一是如何将多天的数据加载到配置单元中。即

s3://mybucket/table\u a/day\u 1/(拼花文件1…n)。
s3://mybucket/table\u a/day\u 2/(拼花文件1…n)。
s3://mybucket/table\u a/day\u 3/(拼花文件1…n)。
...
s3://mybucket/table_b/day_1/(拼花文件1…n)。
s3://mybucket/table_b/day_2/(拼花文件1…n)。
s3://mybucket/table\u b/day\u 3/(拼花文件1…n)。

我知道hive可以支持分区,但我的s3文件不是这样设置的


我还研究了这类数据分析最喜欢的工具。事实上,它支持ansi SQL,这使它成为拥有SQL知识但对hadoop或spark知之甚少的人的绝佳工具。我在我的集群上安装了这个,它工作得很好。但看起来您无法真正将数据加载到表中,您必须依靠配置单元来完成这一部分。这是使用prestodb的正确方法吗?我看了一篇关于他们使用prestodb和使用s3代替HDFS的文章。如果这样做很好,但我想知道如何将数据移动到内存中。在什么时候,拼花文件将从s3移动到集群。我需要一个可以将整个数据加载到内存中的集群吗?这通常是如何设置的?

与其尝试加载多个文件,不如使用API将所需的天数连接到单个对象中,然后通过前面提到的方法加载

AWS有一篇博客文章强调了如何纯粹通过API完成这项工作(无需下载+重新上传数据):

您可以安装配置单元并使用S3中的数据创建配置单元表,如博客文章所述:

然后在AWS上安装Presto,将Presto配置为连接先前安装的配置单元目录。然后,您可以使用SQL查询S3上的数据。

这里(对我来说)的关键理解是,Presto还不支持创建外部表。因此,您必须使用配置单元创建它,然后使用Presto查询它。