Как использовать стокатор от ноутбука IBM Jupyter под управлением pyspark?
Я хочу использовать stocator для доступа к облачному хранилищу IBM с ноутбука Jupyter (в IBM Watson Studio), на котором работает pyspark. Кто-нибудь может сказать мне, как это сделать?
Я понимаю, что стокатор предустановлен, но нужно ли сначала ввести учетные данные или настройки из ноутбука (если на COS есть определенная корзина, к которой я пытаюсь получить доступ)
Например, У меня есть название ведра: my-bucket
Как мне получить к нему доступ?
Я знаю, что могу использовать ibm_boto3 для прямого доступа к COS, но это для искрового приложения, из-за которого мне нужно иметь возможность делать это через stocator.
2 ответа
Все, что вам нужно сделать, это установить параметры конфигурации hadoop для Spark, после чего вы сможете записать фрейм данных как csv внутри корзины COS. Убедитесь, что используемые вами учетные данные имеют права записи или более высокий IAM доступ к корзине COS.
hconf = sc._jsc.hadoopConfiguration()
hconf.set("fs.cos.servicename.iam.api.key", "**********")
hconf.set("fs.cos.servicename.endpoint", "<BUCKET_ENDPOINT>")
df.write.format("csv").save("cos://<bucket>.myservice/filename.csv")
На приведенный выше код была ссылка из этой статьи о среде: - https://medium.com/@rachit1arora/efficient-way-to-connect-to-object-storage-in-ibm-watson-studio-spark-environments-d6c1199f9f97
Итак, чтобы заставить его работать в моем случае, мне пришлось добавить ключ доступа, плюс вы должны убедиться, что вы правильно используете имя службы, поскольку оно применимо к вам, но оно должно быть одинаковым во всех случаях, которые вы используете Это.
hconf = sc._jsc.hadoopConfiguration()
hconf.set("fs.cos.sname.iam.api.key", "API_KEY")
hconf.set("fs.cos.sname.access.key","ACCESS_KEY")
hconf.set("fs.cos.sname.endpoint", "ENDPOINT")
rdd = sc.textFile('file.txt')
rdd.saveAsTextFile('cos://bname.sname/test.txt')