我想使用Stocator从运行pyspark的Jupyter笔记本(在IBM Watson Studio上)访问IBM云存储。有人可以告诉我该怎么做吗?
我了解到stocator已预先安装,但是您是否必须首先从笔记本中放入凭据或设置(如果我要访问的COS上有特定存储桶)
例如我有一个存储桶名称:my-bucket
我如何访问它?
我知道我可以使用ibm_boto3直接访问COS,但这是针对spark应用程序的,因此我需要能够通过stocator进行访问。
答案 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')