开发者社区> 问答> 正文

E-MapReduce Spark如何简单操作 OSS 文件?



使用 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

[font='iconfont'] 推荐做法(以免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.    ...

展开
收起
nicenelly 2017-10-30 15:48:50 1857 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
Hybrid Cloud and Apache Spark 立即下载
Scalable Deep Learning on Spark 立即下载
Comparison of Spark SQL with Hive 立即下载