我想从Aurora表中在Glue作业中创建一个DynamicFrame。我是否可以使用自定义查询从rds表创建DynamicFrame -有where子句?我不想每次在DynamicFrame中读整张表,然后再过滤。看看这个网站,但没有在这里或其他地方找到任何选择,https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect.html
构造JDBC连接选项
connection_mysql5_options ={ "url":"jdbc:mysql://:3306/db","dbtable":"test","user":"admin","password":"pwd"}
从MySQL 5中读取DynamicFrame
( glueContext.create_dynamic_frame.from_options(connection_type="mysql",
df_mysql5 = connection_options=connection_mysql5_options)
有没有办法提供where子句,并说只从测试表中选择前100行,比如它有一个名为"id“的列,我想使用这个查询来获取:
从id<100的测试中选择*;
感谢你的帮助。谢谢!
发布于 2021-03-30 15:05:17
我能够提供自定义查询的方式是创建一个火花DataFrame并使用选项:https://spark.apache.org/docs/2.3.0/sql-programming-guide.html#manually-specifying-options来指定它
然后使用上述类将DataFrame转换为DynamicFrame:https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-pyspark-extensions-dynamic-frame.html
tmp_data_frame = spark.read.format("jbdc")
.option("url", jdbc_url)
.option("user", username)
.option("password", password)
.option("query", "select * from test where id<100")
.load()
dynamic_frame = DynamicFrame.fromDF(tmp_data_frame, glueContext)发布于 2021-05-05 18:27:42
对不起,我本来会发表评论的,但我没有足够的声誉。我能够做出Guillermo AMS在AWS Glue中提供工作的解决方案,但它确实需要两个更改:
"jdbc“格式未被识别(提供的错误是:”"org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider"
在下面的解决方案中,我还在所需的对象和导入周围添加了一些上下文。
我的解决方案看起来像是:
from awsglue.context import GlueContext
from pyspark.context import SparkContext
glue_context = GlueContext(SparkContext.getOrCreate())
tmp_data_frame = glue_context.spark_session.read\
.format("org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider")\
.option("url", jdbc_url)\
.option("user", username)\
.option("password", password)\
.option("dbtable", "(select * from test where id<100)")\
.load()https://stackoverflow.com/questions/60251975
复制相似问题