Ошибка типа: объект «JavaPackage» не вызывается в PySpark, AWS Glue - PullRequest
0 голосов
/ 08 февраля 2019

Я изучил Spark в Scala, но я очень плохо знаком с pySpark и AWS Glue,
, поэтому я следовал этому официальному руководству AWS.
https://docs.aws.amazon.com/ja_jp/glue/latest/dg/aws-glue-programming-python-samples-legislators.html

Я успешно создал разработкуконечная точка,
подключена к pyspark REPL через ssh и напечатала следующие команды:

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 вручную, но это просто не сработало.

Как я могу это исправить?
Буду признателен за любую небольшую помощь.

1 Ответ

0 голосов
/ 12 февраля 2019

Наконец-то я решил сам.
Похоже, это была проблема, связанная с Glue / AWS, а не с искрой или питоном.

После нескольких испытаний я получил сообщение об ошибке, в котором говорится, что операция "ListObject" не удаласьпри запуске Spark (pyspark) REPL.
ListObject - это, очевидно, имя API-вызова boto3 для доступа к содержимому на S3.

Поэтому я проверил его роль IAM, в которой уже был включен AWSGlueConsoleFullAccess с некоторым S3Access, прикрепленным к нему.Политика AmazonS3FullAccess к нему, и ошибка исчезла.
Кроме того, я сделал еще один кластер конечной точки разработки клея, а также не было ошибки на новом кластере, даже без S3FullAccess.

Может быть, каждый раз, когда яРазбудив Spark на клеевом кластере, кластер автоматически пытается получить какое-то обновление из некоторого назначенного сегмента S3, и иногда он сталкивался с проблемами при сборке кластера непосредственно перед выпуском какого-либо обновления.

...