从aws glue/pyspark中的100个表中选择数据

olmpazwi  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(507)

我在aws glue目录中有100个表格,格式如下:

user_1
user_2
...
user_100

每个表都有以下格式:

| id | user_id | date     | expense |
|----|---------|----------|---------|
| 1  | 1       | 20200521 | 200     |
| 2  | 2       | 20200601 | 100     |
| 3  | 1       | 20200603 | 90      |

每个表都有相同的模式,其中一列是expense(int类型)。每个用户的行随机插入到这100个表中。
我要做的是检查给定用户的每个表的expense列的总和。
与创建100个动态帧并连接它们相比,最有效的方法是什么。我想我需要为每个表创建100个数据源,但是有没有更简单的方法从所有100个表中为给定用户选择行并获得总和?
谢谢您。

jxct1oxe

jxct1oxe1#

您使用的是glue catalog,因此数据必须位于s3中。因此,您可以创建一个s3上所有表路径的列表,并将它们作为一个df读取。这样也可以应用下推条件。

Path = [path1, path2 .....path100]
Df = spark.read.csv(*path)

Df.groupby('user_id').agg(sum(expense)).show()

相关问题