我已經(jīng)在 Scala 中學(xué)習(xí)了 Spark,但我對 pySpark 和 AWS Glue 非常陌生,所以我遵循了 AWS 的這個官方教程。https://docs.aws.amazon.com/ja_jp/glue/latest/dg/aws-glue-programming-python-samples-legislators.html我成功創(chuàng)建了開發(fā)端點,通過 ssh 連接到 pyspark REPL 并輸入以下命令:import sysfrom awsglue.transforms import *from awsglue.utils import getResolvedOptionsfrom pyspark.context import SparkContextfrom awsglue.context import GlueContextfrom awsglue.job import JobglueContext = 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_contextTypeError: 'JavaPackage' object is not callable我也嘗試過手動導(dǎo)入 py4j,但是沒有用。我怎樣才能解決這個問題?任何小幫助將不勝感激。
1 回答

慕運維8079593
TA貢獻(xiàn)1876條經(jīng)驗 獲得超5個贊
最后我自己解決了。
看起來這是 Glue/AWS 特定的問題,而不是 spark 或 python。
經(jīng)過多次試驗,我收到一條錯誤消息,指出啟動 Spark(pyspark) REPL 時“ListObject”操作失敗。
ListObject 顯然是 boto3 的 API 調(diào)用名稱,用于訪問 S3 上的內(nèi)容。
所以我檢查了它的 IAM 角色,其中包含 AWSGlueConsoleFullAccess 和一些 S3Access,附加了 AmazonS3FullAccess 策略,錯誤消失了。
此外,我制作了另一個膠水開發(fā)端點集群,即使沒有 S3FullAccess,新集群也沒有錯誤。
也許每次我在膠水集群上喚醒 Spark 時,集群都會自動嘗試從某個指定的 S3 存儲桶中獲取一些更新,有時在某個更新發(fā)布之前構(gòu)建集群時會遇到麻煩。
添加回答
舉報
0/150
提交
取消