aws lambda_AWS Glue –无法从空字符串创建路径

aws lambda

aws lambda

1.概述

尝试运行与DB2 11实例通信的AWS Glue作业时,我收到此错误:

Exception in thread "main" java.lang.IllegalArgumentException: Can not create a Path from an empty string

众所周知,AWS Glue是一种完全托管的ETL服务,基于Apache Spark环境构建。 这样,可以使用Scala或Python(pyspark)编写AWS Glue作业。

我的Glue工作是用Python编写的,这个错误似乎并没有告诉我很多。 我想知道哪里有空字符串?

我在线搜索,发现很多不适用于我的结果,例如apache.org上的结果,解决方法是:“我将Spark版本从2.2.0降级到2.1.1,并通过错误解决了” 。因此带有spark2.2.0的phoenix 4.11 -hbase1.20不起作用,兼容性不好。”

目前,我对AWS Glue的知识有限。 但是,由于它是一项托管服务,因此我认为它不适用。

幸运的是,我确实设法解决了这个问题。

2.解决方案

这是我为解决Glue作业中无法从空字符串错误创建路径而采取的步骤:

  1. 确保可以使用DBeaver之类的软件连接到数据库。 检查架构。
  2. 从Glue作业中删除所有未创建与DB2数据库的连接的代码,然后运行一个简单的命令。 就我而言,该命令是df.printSchema()
  3. 删除数据库的连接字符串信息,然后再次输入。 仔细检查它是否100%正确。
  4. 创建一个新的Glue作业,然后仔细检查AWS中的IAM权限。
  5. 确保驱动程序在作业创建的“安全配置,脚本库和作业参数(可选)”部分中可用。
  6. 确保作业创建/编辑作业的“必需的连接”中的连接可用。

3.测试数据库的简单代码示例

正如我所说,我选择测试尽可能少的代码来确保数据库连接。 如果出现此错误,则可能是您的表存在数据库连接问题或查询问题。

这是我最终用于测试的代码:

 import sys
 import boto3
 import json
 from awsglue.transforms import *
 from awsglue.utils import getResolvedOptions
 from pyspark.context import SparkContext
 from awsglue.context import GlueContext
 from awsglue.dynamicframe import DynamicFrame
 from awsglue.job import Job
 from pyspark.sql.functions import *
 from pyspark.sql.functions import col, asc
 args = getResolvedOptions(sys.argv, [ 'JOB_NAME' ])
 sc = SparkContext()
 glueContext = GlueContext(sc)
 spark = glueContext.spark_session
 job = Job(glueContext)
 job.init(args[ 'JOB_NAME' ], args)
 db_username = "username"
 db_password = "password!"
 db_url = "jdbc:db2://12.345.67.891:50000/somedatabase"
 table_name = "database.sometable"
 jdbc_driver_name = "com.ibm.db2.jcc.DB2Driver"
 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() , db_username).option( , db_password).load()
 db2_schema = df .printSchema()

当然,有不必要的进口。 如果您根据需要更改此代码,则可以使用。

4。结论

如果您在AWS Glue上收到此神秘错误:

Exception in thread "main" java.lang.IllegalArgumentException: Can not create a Path from an empty string

您可以放心地将问题隔离到数据库问题。 检查我上面提到的步骤,并有条不紊地进行。 我相信您将能够确切地了解其原因。

翻译自: https://www.javacodegeeks.com/2020/09/aws-glue-can-not-create-a-path-from-an-empty-string.html

aws lambda

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值