AWS Glue Job连接Denodo报错:getResourceAsStream文件获取失败
AWS Glue连接Denodo报错排查:Error getting file with getResourceAsStream
我正尝试创建新的AWS Glue Job,用于连接Denodo并拉取数据。已遵循Denodo官方的《How to connect to Denodo from AWS Glue》指南,但仍出现以下报错:
2023-03-30 07:09:49,542 INFO [Thread-9] glue.AnalyzerLogHelper$ (Logging.scala:logInfo(24)): 2023-03-30 07:09:49,538 ERROR [pool-2-thread-1] utils.FileUtils (FileUtils.java:readCsvFile(29)) - Error getting file with getResourceAsStream
我的连接代码如下:
db_username = "uname" db_password = "pword" db_url = "jdbc:vdb://dvprod.company.net:9999/company_global_data" table_name = "tablename" jdbc_driver_name = "com.denodo.vdp.jdbc.Driver" s3_output = "s3://cp-aws-ss-prod-data/extracts/" # Connecting to the source df = glueContext.read.format("jdbc")\ .option("driver", jdbc_driver_name)\ .option("url", db_url)\ .option("dbtable", table_name)\ .option("user", db_username)\ .option("password", db_password)\ .load() df.printSchema() print(df.count())
报错发生在连接数据源阶段,Denodo驱动已上传至S3对应目录并在Job的依赖JAR路径中声明,请问我遗漏了什么?
排查方向
- 校验JAR包路径与权限:确认Glue Job中填写的依赖JAR的S3路径完全准确,无拼写错误。同时检查Glue服务角色是否拥有该S3路径的
s3:GetObject权限,权限不足会导致无法读取JAR内部资源。 - 驱动版本兼容性检查:Denodo JDBC驱动版本必须和Denodo平台版本匹配,同时要适配你使用的AWS Glue对应的Spark版本。部分旧版本驱动在Glue环境中无法正常加载内部资源,建议更换为Denodo官方推荐的适配Glue的驱动版本。
- JDBC URL格式验证:确认
jdbc:vdb://格式是否正确,部分Denodo版本需要添加额外参数(如useSSL、sslMode),或者URL中是否需要补充数据库实例的额外标识。可以先在本地用相同的URL、账号密码测试连接,排除URL本身的问题。 - Glue作业参数配置检查:确认作业参数中是否正确设置了
--extra-jars或--jars指向Denodo驱动的S3路径,多JAR包用逗号分隔。部分场景下需要额外设置--driver-class-path参数明确驱动类路径。 - 驱动JAR包完整性校验:重新上传Denodo驱动JAR到S3,用MD5哈希值对比本地和S3上的文件,确保上传过程中没有损坏。损坏的JAR包会导致无法读取内部资源,触发
getResourceAsStream错误。
内容的提问来源于stack exchange,提问作者rann
相关产品推荐
相关产品推荐

