gpt4 book ai didi

python - 类型错误 : 'JavaPackage' object is not callable on PySpark, AWS 胶水

转载 作者:太空宇宙 更新时间:2023-11-04 04:20:25 33 4
gpt4 key购买 nike

我已经在 Scala 中学习了 Spark,但我对 pySpark 和 AWS Glue 还很陌生,
所以我遵循了 AWS 的这个官方教程。
https://docs.aws.amazon.com/ja_jp/glue/latest/dg/aws-glue-programming-python-samples-legislators.html

我成功创建了开发端点,
通过 ssh 连接到 pyspark REPL 并输入以下命令:

import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job

glueContext = GlueContext(SparkContext.getOrCreate())

但是在最后一行,我得到了

>>> glueContext = GlueContext(SparkContext.getOrCreate())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/share/aws/glue/etl/python/PyGlue.zip/awsglue/context.py", line 44, in __init__
File "/usr/share/aws/glue/etl/python/PyGlue.zip/awsglue/context.py", line 64, in _get_glue_scala_context
TypeError: 'JavaPackage' object is not callable

我也尝试过手动导入 py4j,但没有成功。

我该如何解决这个问题?
任何一点帮助将不胜感激。

最佳答案

最后我自己解决了。
看起来这是 Glue/AWS 的特定问题,而不是 spark 或 python。

经过多次尝试,我在启动 Spark(pyspark) REPL 时收到一条错误消息,提示“ListObject”操作失败。
ListObject 显然是 boto3 访问 S3 上内容的 API 调用的名称。

所以我检查了它的 IAM 角色,它有 AWSGlueConsoleFullAccess,其中已经包含一些 S3Access,附加了 AmazonS3FullAccess 策略,错误消失了。
此外,我制作了另一个 glue-development-endpoint 集群,即使没有 S3FullAccess,新集群也没有错误。

也许每次我在胶合集群上唤醒 Spark 时,集群都会自动尝试从某个指定的 S3 存储桶中获取一些更新,有时在更新发布之前构建集群时会遇到麻烦。

关于python - 类型错误 : 'JavaPackage' object is not callable on PySpark, AWS 胶水,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54590592/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com