我编写了以下代码来从 DynamoDB 获取记录并对列部门应用过滤器。但这里的问题是,在获取所有记录时,它会扫描整个 AWS DynamoDB 表,这会带来成本开销。我想对此进行优化,以仅获取具有列 department 的记录。 有人可以帮我解决这个问题吗?更好的优化方法也值得赞赏。
def fetch_data(table_name):
df = glueContext.create_dynamic_frame_from_options(
connection_type="dynamodb"
connection_options = {
"dynamodb.input.tableName" : table_name,
"dynamodb.throughput.read.percent":"1.0"
}
).toDF()
return df.filter(df.department == "Finance") if df.count() > 0 else df
在
department
列上添加 GSI,并使用分页查询 GSI,然后创建 Spark 数据帧。这样做将解决您在数据库上扫描的问题