hadoop源码阅读之FileSystem简记

本文探讨了如何通过源码分析获取hadoop的FileSystem对象,详细解析了`FileSystem.newInstance()`方法的工作原理,包括如何根据scheme从配置中或服务加载器中获取对应的FileSystem子类实现。并介绍了ServiceLoader在加载FileSystem子类中的作用。
摘要由CSDN通过智能技术生成

本文为本人学习hadoop源码过程中所做的笔记,如有问题请大家指出,或者觉得不好,请绕行,谢谢!


fs = FileSystem.newInstance(uri,  conf);

这段代码是如何得到FileSystem对象的呢?

由于FileSystem是抽象类,不能直接实例化对象,
因此只能通过其子类来完成实例化。
哪又是如何通过子类实例化的呢?

通过阅读源码,关键代码如下:
  public static Class<? extends FileSystem> getFileSystemClass(String scheme,
      Configuration conf) throws IOException {
    if (!FILE_SYSTEMS_LOADED) {
      loadFileSystems();
    }
    Class<? extends FileSystem> clazz = null;
    if (conf != null) {
      clazz = (Class<? extends FileSystem>) conf.getClass("fs." + scheme + ".impl", null);
    }
    if (clazz == null) {
      clazz = SERVICE_FILE_SYSTEMS.get(scheme);
    }
    if (clazz == null) {
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值