在AWS Glue上使用JDBC连接Trino
Posted Laurence Geng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在AWS Glue上使用JDBC连接Trino相关的知识,希望对你有一定的参考价值。
呼应此前一篇文章《在Spark上使用JDBC连接Trino》,继续在AWS Glue上测试JDBC连接Trino,同样,这是一个非常不典型的应用用场景,本文仅记录测试步骤和结果,不做评论。本文地址:https://laurence.blog.csdn.net/article/details/129098423,转载请注明出处!
1. 测试环境
信息项 | 设定值 |
---|---|
测试环境 | AWS Glue 3.0 + Trino 398 ( over EMR 6.9.0 ) |
Metastore | Glue Data Catalog |
Trino Server | 10.0.129.105 |
Trino端口 | 8889 ( 区别于开源默认端口8080 ) |
2. 测试目标
测试在Glue上使用JDBC读写Trino的可行性
3. 操作步骤
① 创建Glue Connection
选择JDBC类型的Connection,配置好JDBC URL和网络,Glue Connection最重要的作用是配置Glue Worker到目标数据源的网络联通性,所以务必要清楚Trino所在VPC,子网以及可确保联通的安全组:
② 在Hive中创建数据表并插入测试数据:
# 在Hive所在EMR主节点上执行
cat | hive <<EOF
CREATE TABLE IF NOT EXISTS orders (
orderkey bigint,
orderstatus string,
totalprice double,
orderdate date
);
INSERT INTO orders VALUES (1, \'DONE\', 2342, current_date());
INSERT INTO orders VALUES (2, \'DONE\', 892, current_date());
INSERT INTO orders VALUES (3, \'DONE\', 7843, current_date());
SELECT * FROM orders;
EOF
③ 将Trino JDBC Driver上传至S3
# 在Trino所在EMR主节点上执行
aws s3 cp /usr/lib/trino/trino-jdbc/trino-jdbc-398-amzn-0.jar s3://YOUR_BUCKET/trino-jdbc-398-amzn-0.jar
④ 创建Glue Job
有两点区别于普通Glue Job:
- 需attach上一步创建的connection
- 需指定trino jdbc driver路径 (即为第②步中上传的jar包路径)
⑤ 编写测试代码
import sys
from awsglue.transforms import *
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
sc = SparkContext()
glueContext = GlueContext(sc)
job = Job(glueContext)
# Please update the values in the options to connect to your own data source
options =
"dbTable":"orders",
"url" : "jdbc:trino://10.0.129.105:8889/hive/default",
"user": "hadoop",
"password": "",
"className" : "io.trino.jdbc.TrinoDriver"
datasource = glueContext.create_dynamic_frame_from_options(
connection_type = "custom.jdbc",
connection_options = options,
transformation_ctx = "datasource")
datasource.show()
job.commit()
⑥ 程序输出
以上是关于在AWS Glue上使用JDBC连接Trino的主要内容,如果未能解决你的问题,请参考以下文章
如何使用带有 PySpark 的 WHERE 子句在 AWS Glue 中查询 JDBC 数据库?
如何从 AWS Glue 中的 JDBC 编目连接加载部分数据?