要解决“AWS Glue动态数据帧对RDS数据库报告零条记录”的问题,可以使用以下代码示例:
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
# 获取Glue作业的参数
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
# 创建Spark上下文和Glue上下文
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
# 创建Glue作业
job = Job(glueContext)
job.init(args['JOB_NAME'], args)
# 从RDS数据库读取数据
datasource = glueContext.create_dynamic_frame.from_catalog(database = "your_database", table_name = "your_table")
# 过滤数据帧,排除零条记录
filtered_datasource = Filter.apply(frame = datasource, f = lambda x: x['your_column'] is not None)
# 打印数据帧的记录数
record_count = filtered_datasource.count()
print("记录数:", record_count)
# 执行Glue作业
job.commit()
请注意,上述代码中的“your_database”和“your_table”需要替换为实际的数据库和表名,而“your_column”需要替换为实际的列名。这段代码将从RDS数据库读取数据,并使用Filter.apply函数过滤掉零条记录。最后,它将打印出数据帧的记录数。
确保在执行代码之前,已正确配置AWS Glue作业的角色和连接。