阅读831 返回首页    go 阿里云 go 技术社区[云栖]


简单操作 OSS 文件__Spark_开发人员指南_E-MapReduce-阿里云

使用 OSS SDK 存在的问题

若在 Spark 或者 Hadoop 作业中无法直接使用 OSS SDK 来操作 OSS 中的文件,是因为OSS SDK 中依赖的 http-client-4.4.x 版本与 Spark 或者 Hadoop 运行环境中的 http-client 存在版本冲突。如果要这么做,就必须先解决这个依赖冲突问题。实际上在 E-MapReduce 中,Spark 和 Hadoop 已经对 OSS 做了无缝兼容,可以像使用 HDFS 一样来操作 OSS 文件。

  • 当前E-MapReduce环境支持MetaService服务,可以支持在E-MapReduce环境面AK访问OSS数据。旧的显示写AK的方式依旧支持,请注意在操作OSS的时候优先使用内网的Endpoint。
  • 当您需要在本地进行测试的时候,才要用到OSS的外网的Endpoint,这样才能从本地访问到OSS的数据。

所有的Endpint可以参考 OSS Endpoint

推荐做法(以免AK方式为例)

请您使用如下方法来查询 OSS 目录下的文件:

  1. [Scala]
  2. import org.apache.hadoop.conf.Configuration
  3. import org.apache.hadoop.fs.{Path, FileSystem}
  4. val dir = "oss://bucket/dir"
  5. val path = new Path(dir)
  6. val conf = new Configuration()
  7. conf.set("fs.oss.impl", "com.aliyun.fs.oss.nat.NativeOssFileSystem")
  8. val fs = FileSystem.get(path.toUri, conf)
  9. val fileList = fs.listStatus(path)
  10. ...
  11. [Java]
  12. import org.apache.hadoop.conf.Configuration;
  13. import org.apache.hadoop.fs.Path;
  14. import org.apache.hadoop.fs.FileStatus;
  15. import org.apache.hadoop.fs.FileSystem;
  16. String dir = "oss://bucket/dir";
  17. Path path = new Path(dir);
  18. Configuration conf = new Configuration();
  19. conf.set("fs.oss.impl", "com.aliyun.fs.oss.nat.NativeOssFileSystem");
  20. FileSystem fs = FileSystem.get(path.toUri(), conf);
  21. FileStatus[] fileList = fs.listStatus(path);
  22. ...

最后更新:2016-12-19 19:17:57

  上一篇:go 参数说明__Spark_开发人员指南_E-MapReduce-阿里云
  下一篇:go Spark + ODPS__Spark_开发人员指南_E-MapReduce-阿里云