s sh в конечную точку склеивания, поскольку oop пользователь `File '/var/aws/emr/userData.json' не может быть прочитан` - PullRequest
0 голосов
/ 25 марта 2020

По сути, я пытаюсь решить эту проблему после установки моего PyCharm на конечную точку разработчика Glue ETL, следуя этому учебнику.

java.io.IOException: File '/var/aws/emr/userData.json' cannot be read

Данный файл принадлежит oop.

[glue@ip-xx.xx.xx.xx ~]$ ls -la /var/aws/emr/
total 32
drwxr-xr-x 4 root   root    4096 Mar 24 19:35 .
drwxr-xr-x 3 root   root    4096 Feb 12  2019 ..
drwxr-xr-x 3 root   root    4096 Feb 12  2019 bigtop-deploy
drwxr-xr-x 3 root   root    4096 Mar 24 19:35 packages
-rw-r--r-- 1 root   root    1713 Feb 12  2019 repoPublicKey.txt
-r--r----- 1 hadoop hadoop 10221 Mar 24 19:34 userData.json

И я не могу изменить его разрешение, как предложено Эри c здесь . Я ввел sh в мою конечную точку разработчика, используя мой ключ publi c.

ssh -i ~/.ssh/<my_private_key> glue@ec2-xx.xx.xx.xx.eu-west-1.compute.amazonaws.com

и не может изменить пользователя на oop sudo -su hadoop, потому что запрашивает пароль root, которого я не знаю [sudo] password for glue:. Также я не могу s sh в конечную точку, используя пользователя oop (вместо root (клей)), он говорит, что разрешение запрещено (publickey). У меня вопрос ... Как же я узнаю пароль пользователя root (клей) для dev-endpoint? Меня никогда не просили ничего настраивать при создании dev-endpoint. Или как я могу sh в dev-endpoint через пользователя oop?

1 Ответ

1 голос
/ 25 марта 2020

Так что это была не настоящая проблема. Получил обзор от команды AWS, и они сказали, что вы получите эти предупреждения и ошибки rubbi sh при запуске сценариев зажигания в EMR через PyCharm, но это не должно влиять на реальную задачу вашего сценария. Оказалось, что созданный мной dataFrame;

persons_DyF = glueContext.create_dynamic_frame.from_catalog(database="database", table_name="table")

не показывал мне никакой схемы, когда я делал persons_DyF.printSchema(). Принимая во внимание, что я почти уверен, что определил эту схему таблицы. Он просто выводит root и persons_DyF.count() = 0. Так что вместо этого я бы использовал pySpark

from pyspark.sql import SparkSession

spark = SparkSession.builder.getOrCreate()
df = spark.read.table("ingestion.login_emr_testing")
print(df.printSchema())
df.select(df["feed"], df["timestamp_utc"], df['date'], df['hour']).show()

дал мне следующий результат:

.
.
allot of rubbish errors and warning including `java.io.IOException: File '/var/aws/emr/userData.json' cannot be read`
.
.
+------+--------------------+----------+----+
| feed |       timestamp_utc|      date|hour|
+------+--------------------+----------+----+
|TWEAKS|19-Mar-2020 18:59...|2020-03-19|  19|
|TWEAKS|19-Mar-2020 18:59...|2020-03-19|  19|
|TWEAKS|19-Mar-2020 19:00...|2020-03-19|  19|
|TWEAKS|19-Mar-2020 18:59...|2020-03-19|  19|
|TWEAKS|19-Mar-2020 19:00...|2020-03-19|  19|
|TWEAKS|19-Mar-2020 19:00...|2020-03-19|  19|
|TWEAKS|19-Mar-2020 19:00...|2020-03-19|  19|
|TWEAKS|19-Mar-2020 19:00...|2020-03-19|  19|
|TWEAKS|19-Mar-2020 19:00...|2020-03-19|  19|
|TWEAKS|19-Mar-2020 19:00...|2020-03-19|  19|
|TWEAKS|19-Mar-2020 19:00...|2020-03-19|  19|
|TWEAKS|19-Mar-2020 19:00...|2020-03-19|  19|
|TWEAKS|19-Mar-2020 19:00...|2020-03-19|  19|
+-----+--------------------+----------+----+
...