我在ec2服务器中有一个到sql服务器的aws-glue jdbc连接。在遍历整个模式之后,我创建了一个作业来查询某个表,并使用活动监视器来检查glue发送到数据库的内容,这些查询只是整个表中的一个select*。。。
代码如下:
spark_context = SparkContext.getOrCreate()
glue_context = GlueContext(spark_context)
dynamic_frame = glue_context.create_dynamic_frame.from_catalog(database=glue_db, table_name=table_name)
我的问题是,如何将此请求更改为类似“select column1,column2 from table_name”,而不是select*。。。因为假设在这个表上有一个blob内容,我不需要执行任何转换,如果它们不被使用,为什么我需要通过网络获取所有数据?
我试图编辑表的模式,但没有任何更改。。。它只发送select*。。。
为什么要强制初始查询是我想要的?
谢谢!
1条答案
按热度按时间v1uwarro1#
将查询下推到db引擎是一个好主意,因为它可以减少粘合作业的负载,还可以减少网络传输。
如果要将查询传递给db,则glue中没有支持此功能的本机功能。但是,可以通过将数据读入spark dataframe,然后将其转换为dynamicframe到levarage glue转换来实现。
下面是mysql read的一个示例,您可以参考这个示例并更改sqlserver的jdbc url。