В AWS EMR Jupyter Notebook, как изменить пользователя с livy на hadoop - PullRequest
0 голосов
/ 23 октября 2019

Я создал кластер EMS AWS и загрузил

sparkify_log_small.json

И создал блокнот EMR Jupyter с кодом ниже, считая, что он будет считываться из домашнего каталога пользователя ( hadoop ).

sparkify_log_data = "sparkify_log_small.json"
df = spark.read.json(sparkify_log_data)
df.persist()
df.head(5)

Но при отправке кода я получаю ошибку ниже.

'Path does not exist: hdfs://ip-172-31-50-58.us-west-2.compute.internal:8020/user/livy/sparkify_log_small.json;'
Traceback (most recent call last):
  File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/readwriter.py", line 274, in json
    return self._df(self._jreader.json(self._spark._sc._jvm.PythonUtils.toSeq(path)))
  File "/usr/lib/spark/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py", line 1257, in __call__
    answer, self.gateway_client, self.target_id, self.name)
  File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/utils.py", line 69, in deco
    raise AnalysisException(s.split(': ', 1)[1], stackTrace)
pyspark.sql.utils.AnalysisException: 'Path does not exist: hdfs://ip-172-31-50-58.us-west-2.compute.internal:8020/user/livy/sparkify_log_small.json;'

Из Google, узнал, что пользователь YARN по умолчанию livy . Как я могу изменить пользователя в блокноте jupyter с livy на hadoop (или), указав на нужный каталог.

Я попытался создать папку, как показано ниже, и скопировать файл из /home/hadoop/sparkify_log_small.json в /home/livy/sparkify_log_small.json

, но не сработал.

Здесь я в основном пытаюсь прочитать файл из ec2-master из ноутбука.

1 Ответ

0 голосов
/ 23 октября 2019

Процедуры разрешены ниже,

Проверенные файлы hadoop

hadoop fs -ls

Создана папка в файловой системе hadoop

hdfs dfs -mkdir /home
hdfs dfs -mkdir /home/hadoop

Скопировал файл в это место

hadoop fs -put ./sparkify_log_small.json /home/hadoop/sparkify_log_small.json

Затем запустил код питона в ячейке Юпитера. Это сработало.

...