网页设计与网站建设考试题目,网页制作基础教程直播,有哪些做农产品的网站,阳江网红店在哪个位置AWS Glue作为一种无服务器产品#xff0c;其运行环境是“不可预知”的#xff0c;也就是“一个黑盒”#xff0c;所以如何能连接一些自有数据源是Glue必须考虑并给予满足的#xff0c;为此#xff0c;Glue给出的解决方案就是Connector和Connection#xff0c;一个connect…AWS Glue作为一种无服务器产品其运行环境是“不可预知”的也就是“一个黑盒”所以如何能连接一些自有数据源是Glue必须考虑并给予满足的为此Glue给出的解决方案就是Connector和Connection一个connector就是一个用于协助访问数据源的程序包(容器镜像或Jar包如果你要使用一个connector必须先创建一个针对该connector的connection。一个connection包含了连接一个特定数据源的属性。connector和connections联合起来为目标数据源提供访问通路。本文地址https://laurence.blog.csdn.net/article/details/129139176转载请注明出处
1. 关系与区别
下面是一些明确切且重要的结论
先创建Connector再创建Connection后者依附于前者Connector与Connection是一对多的映射关系Connector与Connection非常类似于数据库客户端工具例如DataGrip中的Driver和DataSource之间的关系Connector类似Driver主要包含JAR包和基础属性如JDBC类型的Connector需要配置Base的JDBC URLDataSource类似于DataSource主要包含身份认证信息和网络配置能在Glue控制台上编辑的主要是Custom Connector Connection以及Marketplace Connector关联的ConnectionMarketplace Connector是只读的不可配置对应Connection可由用户创建和编辑Marketplace Connector在架构上有更大的“运作空间”一般以容器形式运行于EKS/ECS上Custom Connector只能是一个Jar包所以它只有Spark、Athena、JDBC三种类型对应Glue提供的三种集成API)Custom Connection可以独立于Connector存在依赖Jar包可通过Job Dependent Jar配置给Job故不一定非要依赖Connector再进一步如果配置了VPC Connection再通过Job Dependent Jar配置Jar包则Connection也可以省去未必所有的Connection都可以但测试过部分确实是可行的尽管上述两点都已证明可行还是建议始终使用Custom Connector Custom Connection的标准方式配置数据源连接。跳过Connector直接创建Custom Connection会丢失一个优势由于在Glue图形化编辑器上只有Connector是可以直接拖放的Source/Sink组件所以如果跳过Custom Connector直接创建Custom Connection在Glue图形化编辑器上就没有这个数据源对应的连接器可以拖放了。
下图对以上要点进行了总结 来自于marketplace的connector显然拥有“特权”它们拥有更加复杂的架构这些connector往往都有自己docker镜像并使用ECS/EKS部署和运行镜像独立的镜像给了connector最大化的定制空间。而自定义connector的“运作空间”远远没有marketplace上的connector大它不能拥有自定义镜像只能以jar包形式存在并依附于Glue的运行环境通过三套API接口集成所以自定义的connector只有三种类型只能以Jar包形式存在
Spark DataSource API - connectionTypecustom.sparkAmazon Athena Data Source API - connectionTypecustom.athenaJava JDBC API - connectionTypecustom.jdbc
2. Connection的加载时机
此外我们一直想找出Glue的Connection与Spark原生数据加载方式例如:spark.read.format(“jdbc”)之间到底有什么差异我们以JDBC类型的Connection做了如下一些测试
测试场景测试结果Custom JDBC Connection Glue Context with Connection成功Custom VPC Connection Job Dependent Jar Glue Context with Connection成功Custom JDBC Connection Spark原生数据加载方式 ( spark.read.format(“jdbc”) )失败
上述三个测试用例可有力地证明在Glue中对于一个数据源的连接配置只能通过Glue专属的GlueContext加载才能生效。关于这一点我们没有办法从源代码上获得验证但是一种合理的解释是我们知道Glue作为Serverless产品其工作节点Worker的网络环境是不可见的“黑盒”为了能和目标数据源打通Glue会根据Connction中的网络配置给它的工作节点创建临时的ENI虚拟网卡用于连接到Connection配置的子网中这些工作节点也因此获得了指定子网内的私有IP地址从上面的测试结果来看真正触发Glue去完成这一系列操作的“开关”是在代码中通过GlueContext加载Connection时根据Spark Lazy Loading的一贯特性触发的时机可能会更晚有可能是在初次读取DynamicFrame时而不是只要在Job属性中关联了一个Connection在Job启动时就会被自动激活。
3. 重要细节
最后补充一些测试中的细节 Trino JDBC Driver的URL中user参数不得为空 Trino JDBC Driver的URL中user和passoword只能通过secret manager配置方可生效 通过Glue专属的GlueContext加载Connection指的是类似下面的代码 # author: https://laurence.blog.csdn.net/
Trino_node1676884948138 glueContext.create_dynamic_frame.from_options(connection_typecustom.jdbc,connection_options{tableName: orders,dbTable: orders,jobBookmarkKeys: [orderkey],jobBookmarkKeysSortOrder: asc,connectionName: my-trino-connection,},transformation_ctxTrino_node1676884948138,
)通过Spark原生数据加载方式读取数据源指的是类似下面的代码 # author: https://laurence.blog.csdn.net/
spark.read.format(jdbc).option(url, jdbc:trino://localhost:8889/hive/default).option(driver, io.trino.jdbc.TrinoDriver).option(user, hadoop).option(dbtable, orders).load().show()Glue的官方文档对于创建ENI有专门的解释 AWS Glue sets up elastic network interfaces that enable your jobs to connect securely to other resources within your VPC. Each elastic network interface is assigned a private IP address from the IP address range within the subnet you specified.
4. 相关资源
4.1. 内置Connectors
connectionTypeConnects Tocustom.*Spark, Athena, or JDBC data stores (see Custom and AWS Marketplace connectionType valuesdocumentdbAmazon DocumentDB (with MongoDB compatibility) databasedynamodbAmazon DynamoDB databasekafkaKafka or Amazon Managed Streaming for Apache KafkakinesisAmazon Kinesis Data Streamsmarketplace.*Spark, Athena, or JDBC data stores (see Custom and AWS Marketplace connectionType values)mongodbMongoDB databasemysqlMySQL database (see JDBC connectionType Values)oracleOracle database (see JDBC connectionType Values)orcFiles stored in Amazon Simple Storage Service (Amazon S3) in the Apache Hive Optimized Row Columnar (ORC) file formatparquetFiles stored in Amazon S3 in the Apache Parquet file formatpostgresqlPostgreSQL database (see JDBC connectionType Values)redshiftAmazon Redshift database (see JDBC connectionType Values)s3Amazon S3sqlserverMicrosoft SQL Server database (see JDBC connectionType Values)
4.2. Marketplace Connectors
通过下面的链接可以查找到Marketplace上所有的连接器
https://aws.amazon.com/marketplace/search/results?searchTermsglueconnector
4.3. Custom Connectors
这里有一篇整体介绍建议先阅读此文:
Developing, testing, and deploying custom connectors for your data stores with AWS Glue
4.3.1. 基于Spark DataSource API的自定义连接器
文档:
https://github.com/aws-samples/aws-glue-samples/tree/master/GlueCustomConnectors/development/Spark/glue-3.0
示例
MinimalSpark3Connector.scala
4.3.2. 基Java JDBC API的自定义连接器
文档:
https://docs.aws.amazon.com/glue/latest/ug/connectors-chapter.html#code-jdbc-connector
示例
https://github.com/aws-samples/aws-glue-samples/blob/master/GlueCustomConnectors/development/Spark/SparkConnectorMySQL.scala
4.3.3. 基Java JDBC API的自定义连接器
文档:
https://github.com/aws-samples/aws-glue-samples/tree/master/GlueCustomConnectors/development/Athena
示例
https://github.com/aws-samples/aws-glue-samples/tree/master/GlueCustomConnectors/development/Athena
本文地址https://laurence.blog.csdn.net/article/details/129139176转载请注明出处