全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
E-MapReduce

简单操作 OSS 文件

更新时间:2017-06-07 13:26:11

使用 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. ...
本文导读目录