AWS Glue错误 - 运行Python shell程序时提供无效输入。

6
我有一个Glue任务,这是一段Python的shell代码。当我尝试运行它时,出现以下错误信息。 任务名称:xxxxx 任务运行ID:yyyyyy 由于无效输入而执行失败,内部服务错误 这个问题不仅限于代码本身,即使只是输入特定内容也会出现这个错误。
import boto3
print('loaded')

我在点击“运行作业”选项后立即收到错误提示,这是什么问题?


1
你能分享一些更多的工作细节和日志里有什么吗? - Srini
3
我遇到了同样的问题。任何 Python 脚本都会生成这个错误。所有日志都是空的。 - ak2040
我也遇到了同样的错误。 - justanewb
6个回答

4

我也遇到了这种情况,但是同样的工作在另一个账户上是可以正常运行的。

AWS文档对这个错误并没有详细的解释:

提供的输入无效。

我怀疑这不是亚马逊的问题,正如@Quartermass所提到的那样。


它可以来自许多Glue函数:https://github.com/aws/aws-sdk-java/blob/master/aws-java-sdk-glue/src/main/java/com/amazonaws/services/glue/AWSGlue.java - Jérémy

2

我也收到了这个非常有帮助的错误信息。

对我有效的方法是明确地设置属性,如工作类型、工作数量、Glue版本和Python版本。

在Terraform代码中:

resource "aws_glue_job" "my_job" {
  name              = "my_job"
  role_arn          = aws_iam_role.glue.arn
  worker_type       = "Standard"
  number_of_workers = 2
  glue_version      = "4.0"

  command {
    script_location = "s3://my-bucket/my-script.py"
    python_version  = "3"
  }

  default_arguments = {
    "--enable-job-insights" = "true",
    "--additional-python-modules" : "boto3==1.26.52,pandas==1.5.2,SQLAlchemy==1.4.46,requests==2.28.2",
  }
}

更新

进一步的研究后,我意识到我需要的是一个Python shell脚本Glue作业,而不是ETL(Spark)作业。选择这种类型的作业后,将Python版本设置为3.9,并“勾选” Glue 预安装的分析库,我的脚本顺带具备了我所需的所有库的访问权限。

我的Terraform代码最终如下:

resource "aws_glue_job" "my_job" {
  name         = "my-job"
  role_arn     = aws_iam_role.glue.arn
  glue_version = "1.0"
  max_capacity = 1

  connections = [
    aws_glue_connection.redshift.name
  ]

  command {
    name            = "pythonshell"
    script_location = "s3://my-bucket/my-script.py"
    python_version  = "3.9"
  }

  default_arguments = {
    "--enable-job-insights" = "true",
    "--library-set" : "analytics",
  }
}

请注意,我已经切换到使用Glue 1.0版本。经过一些试错之后,我发现这是与pythonshell作业兼容的版本,虽然没有明确说明...但是它确实可行!

1
谢谢。最终我只需要指定“glue_version”即可。 - Andrew Moore
@AndrewMoore 不用担心!请看我的更新。在弄清楚我只需要一个 pythonshell 作业类型后,我能够极大地简化我的代码。 - Blair Nangle

1

昨天在eu-west-2也遇到了同样的问题,现在已经解决。这只发生在Pythonshell作业中,而不是Pyspark作业中,并且作业运行没有输出任何日志流。我只能假设这是一个AWS问题,他们现在已经修复了,但没有发布服务公告。


1
我认为Quatermass是对的,这些工作在第二天开始突然起作用,没有任何变化。

0

嗯,在我的情况下,我偶尔会无明显原因地遇到这个错误。唯一似乎导致此问题的事情是修改一些作业参数并保存修改。一旦我保存并尝试执行作业,通常就会出现这个错误,而解决问题的唯一方法是销毁作业,然后重新创建它。有人通过其他方式解决了这个问题吗?正如我在被接受的答案中看到的那样,作业开始自动工作,表明问题是AWS的一个错误,已经得到纠正。


0

我曾经遇到过类似的问题。我是通过工作流来调用我的任务的。在将任务添加到工作流之前,我通过添加WorkerTypeGlueVersionNumberOfWorkers来解决了这个问题。在添加这些内容之前,我一直看到它失败,但在添加之后成功了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接