我们将S3用作所有数据。它们中的大多数结构化并作为拼合文件存储在分区文件夹中。到目前为止,我们主要使用EMR和直接S3路径来访问和处理数据。
我想在整个架构中引入一些结构,同时使所有内容保持无服务器状态,因此我考虑使用AWS Glue数据目录作为中央元存储,充当S3上数据的抽象层,以便于查询。我还希望Athena是一个非常好用且易于使用的工具,尤其是对于我们的分析师而言。
但是,我们还需要处理数据并将结果再次输出到S3中。一方面意味着ETL转换,另一方面意味着聚合,例如收集统计信息,在各个级别上执行一些计数等,然后将其存储在表中。
由于使用Athena进行的特殊查询可以很好地完成这项工作,并且可以自动扩展,但是问题在于我们不能将其用于自动化工作,而不能将结果插入到另一个S3 Glue表中。尽管Athena有一个简单的选项可以将结果存储在S3中,但是这与在普通数据库中存储SQL时一样,无法在数据之上使用抽象SQL层。
另一方面,AWS Glue确实提供ETL功能,但这是在Spark和python中,它们需要代码,而不仅仅是SQL。
所以我的问题是:AWS中是否有一种产品或方法可以通过使用S3作为存储以及可能仅使用SQL进行操作来查询和插入数据?还应记住,无服务器是Athena的一种,但也要用于输出或插入其他表(也是现有表)中。
作为奖励,我还想在表的顶部创建视图,以为模型提供另一层安全性和逻辑,并理想地使用这些视图而不是表。任何对此的建议也将不胜感激。
谢谢。
答案 0 :(得分:0)
您想对输入数据进行哪种ETL转换并再次将其写入S3?仅仅是简单的聚合吗?可以将所有要转换的内容编写为Athena中的SQL查询吗?在这种情况下,您可以使用CREATE TABLE来将查询输出写入另一个Athena表中,该表将为您自动在S3中写入一组新文件。我已经写过here,Athena文档也有很多细节。
答案 1 :(得分:0)
在胶水中,您可以使用pysql编写sql命令。
df.createOrReplaceTempView('table_name')
df1 = spark.sql(查询)