如何从运行pyspark的IBM Jupyter笔记本中使用Stocator?

时间:2019-11-14 21:33:24

标签: jupyter-notebook ibm-cloud ibm-watson watson-studio stocator

我想使用Stocator从运行pyspark的Jupyter笔记本(在IBM Watson Studio上)访问IBM云存储。有人可以告诉我该怎么做吗?

我了解到stocator已预先安装,但是您是否必须首先从笔记本中放入凭据或设置(如果我要访问的COS上有特定存储桶)

例如我有一个存储桶名称:my-bucket

我如何访问它?

我知道我可以使用ibm_boto3直接访问COS,但这是针对spark应用程序的,因此我需要能够通过stocator进行访问。

2 个答案:

答案 0 :(得分:1)

您需要做的就是设置spark的hadoop配置参数,然后应该能够将数据帧作为csv写入COS存储桶中。确保您使用的凭据确实具有对COS存储桶的写入者或更高的IAM访问权限。

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

答案 1 :(得分:0)

好的,要使其在我的情况下起作用,我还必须添加访问密钥,此外,您还必须确保正确使用了适用于您的服务名称,但所有名称都应该相同您使用它的实例。

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')