Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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 web services 对于列a中的每个不同值,生成一个新表_Amazon Web Services_Amazon S3_Aws Lambda_Aws Glue_Amazon Athena - Fatal编程技术网

Amazon web services 对于列a中的每个不同值,生成一个新表

Amazon web services 对于列a中的每个不同值,生成一个新表,amazon-web-services,amazon-s3,aws-lambda,aws-glue,amazon-athena,Amazon Web Services,Amazon S3,Aws Lambda,Aws Glue,Amazon Athena,我在S3中有一个Athena数据表,用作源表,其中包含列id,name,event。对于该表中每个唯一的name值,我想输出一个新表,其中包含与该name值对应的所有行,并保存到S3中的另一个bucket中。这将导致在S3中存储n个新文件,其中n也是源表中唯一的name值的数目 我曾尝试在Lambda中使用partitionby和CTAS查询进行单个Athena查询,但似乎无法得到我想要的结果。看起来AWS胶水可能能够达到我的预期效果,但我在网上看到它更贵,也许我可以使用Lambda获得我的预期

我在S3中有一个Athena数据表,用作源表,其中包含列
id
name
event
。对于该表中每个唯一的
name
值,我想输出一个新表,其中包含与该
name
值对应的所有行,并保存到S3中的另一个bucket中。这将导致在S3中存储n个新文件,其中n也是源表中唯一的
name
值的数目

我曾尝试在Lambda中使用
partitionby
和CTAS查询进行单个Athena查询,但似乎无法得到我想要的结果。看起来AWS胶水可能能够达到我的预期效果,但我在网上看到它更贵,也许我可以使用Lambda获得我的预期效果

如何存储一个新文件(最好是JSON格式),其中包含与S3中每个唯一的
名称
对应的所有行?


我最好每天运行一次,以更新由
name
存储的数据,但以上问题是目前主要关注的问题。

在编写spark/glue代码时,需要使用name列对数据进行分区。但是,这将导致路径具有以下格式

S3://bucketname/folder/name=value/file.json

这应该为每个名称值提供一组单独的文件,但是如果您想将其作为单独的表访问,则可能需要在对数据进行爬网并通过Athena使其可用之前从键中删除该=符号

如果您确实使用lambda,那么该操作涉及到遍历数据(类似于glue所做的),并对数据进行分区


我想这完全取决于它需要处理的数据量。胶水,如果使用火花可能有一点额外的启动时间。Glue python Shell具有相对较好的启动时间

感谢您的回复。这与我得出的结论基本相同,尽管我是从AWS胶水中分割出来的。我现在的问题是,在最初的问题中,我说我想按
名称
列进行分区,尽管实际上它是
url
列。然而,你的回答完全回答了我的问题!