閱讀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-阿裏雲