项目github地址:bitcarmanlee easy-algorithm-interview-and-practice
欢迎大家star,留言,一起学习进步

在hadoop的MR相关代码中,经常需要获得mapper输入的文件名,从而针对不同的文件进行不同的操作。下面简单地介绍一下如果在MR代码中获取文件名

1.在streaming中获取文件名

实际中经常用python开发streaming程序,在python代码中可以用如下方式获得文件名:

import osfilepath = os.environ["mapreduce_map_input_file"]

通过上面的代码即可达到获取文件名的目的,通过代码也很容易看出,文件名保存在名为mapreduce_map_input_file的环境变量中。

需要稍微注意的地方有两点:
1.filepath保存的是文件在hdfs上的完整路径。
2.新版本的api为mapreduce_map_input_file,老版本的api为map_input_file,在集群上尝试了老版本的api,代码会报错。

2.在java代码中获取文件名

在java代码中获取文件名,需要得到input split 所在的文件名,需要从map函数中的context参数着手。

// 获取 input split 所在的文件名
private String getFileName(MapContext context) {return ((FileSplit) context.getInputSplit()).getPath().getName();
}

如果需要获得在hdfs上的绝对路径,可以用以下代码实现:

String filepath = ((FileSplit)context.getInputSplit()).getPath().toString();

获取文件名的大致流程为:Context(map函数里) → InputSplit → FileSplit → Path → String(file name)。

hadoop 代码中获取文件名相关推荐

  1. php获取当前文件名和路径,PHP 中获取文件名及路径

    PHP 中获取文件名及路径 为了脚本程序的兼容性,很多时候脚本的名称都不是固定的.所以我们需要通过动态获取当前脚本的路径.文件名来完成某些功能. PHP 中,我们可以使用常量 __FILE__ 来获取 ...

  2. 在代码中获取ApplicationContext实例

    基于Spring的Java应用会通过ApplicationContext接口提供应用程序配置.我们常常需要在代码中获取当前的ApplicationContext.如在集成测试时,需要通过Applica ...

  3. 如何从代码中获取当前方法的名称[复制]

    本文翻译自:How to get the name of the current method from code [duplicate] This question already has an a ...

  4. 获取存储过程返回值及代码中获取返回值

    获取存储过程返回值及代码中获取返回值 1.OUPUT参数返回值例: 向Order表插入一条记录,返回其标识 CREATE PROCEDURE [dbo].[nb_order_insert]( @o_b ...

  5. 获取存储过程返回值及代码中获取返回值(转)

    获取存储过程返回值及代码中获取返回值 1.OUPUT参数返回值例: 向Order表插入一条记录,返回其标识 CREATE PROCEDURE [dbo].[nb_order_insert]( @o_b ...

  6. vba不能提取服务器上文件名,从全路径文件名中获取文件名(不含路径)

    从全路径文件名中获取文件名(不含路径) 方法一: Public Function gf_GetFileName(strFullPath As String) As String Dim splitLi ...

  7. 安卓代码中获取dp值为控件设置宽高,获取dimen值

    引言: 今天遇到一个问题,在自定义控件的时候,要求在代码中设置控件的宽高.本来自以为:对嘛,很简单,就是直接设置params //这样直接初始化的时候设置LayoutParams iconparams ...

  8. 如何在代码中获取Java应用当前的版本号?

    最近需要在项目中获取项目的版本号,最笨的方法莫过于硬编码一个版本号,当然我也是这么干的.不过闲下来的时候突发奇想Spring Boot项目中pom.xml定义的版本号能不能通过API获得呢?于是利用摸 ...

  9. 【Android NDK 开发】在 C 代码中获取 Android 系统信息 ( NDK 项目创建 | NDK 配置 | 获取 Android 系统版本号 )

    文章目录 I . 创建 NDK 项目 II . NDK 项目 相关配置 III . NDK 中获取 Android 版本号 IV . 使用 __system_property_get 可获取的参数 I ...

  10. 在C#代码中获取Silverlight的初始化initparams参数

    今天学习内容是,我们将利用Silverlight给我们提供的一个便利的方法来实现: 当一个web page加裁时,把指定参数(或信息)从 web page传递到silverlight中,这就是init ...

最新文章

  1. python 之路200行Python代码写了个打飞机游戏
  2. security面试_精选41 道 Spring Boot 面试题,附答案!
  3. 外媒列10大理由建议消费者不购买iPad
  4. python上传文件到windows_python自动化-WinSpy+pywin32文件上传操作
  5. [慕课笔记] node+mongodb建站攻略
  6. matlab使用常犯的错误
  7. 信息学奥赛一本通 1308:【例1.5】高精除
  8. bgll算法 matlab,一种复杂网络社区检测的方法与流程
  9. 【已解决】bootstrap table 参数后台获取不到
  10. Python数据挖掘之时序模型预测
  11. python qqbot实现qq聊天机器人_Python QQBot库的QQ聊天机器人
  12. linux audio device driver音频设备驱动
  13. 【Linux kernel/cpufreq】framework ----cpufreq governor
  14. 7z解压crc错误_百度网盘压缩下载文件的CRC校验错误的解决方法
  15. 如何规划与实施数字化工厂?
  16. 一个非常简单的方法使用JavaScript打包一个网页成为安卓app(打包远景论坛)
  17. 室内空气流动原理图_新风系统工作原理图—新风系统工作原理介绍
  18. web连接蓝牙电子秤navigator.bluetooth
  19. 达梦数据库亮相第七届中国国际国防电子展览会
  20. Win10系统里的软件有小盾牌有啥影响吗

热门文章

  1. 【二 HTTP编程】2. HTTP路由
  2. 前端学习总结【103天】:CSS——不用JavaScript实现tab标签切换的两种方法
  3. 如何在Windows上安装多个MySQL
  4. C语言printf语法
  5. 认识linux,走进开源世界。
  6. WPF中的Application类。
  7. 【跃迁之路】【507天】程序员高效学习方法论探索系列(实验阶段264-2018.06.27)...
  8. 20172328《程序设计与数据结构》第三周学习总结
  9. 3.python(第三天日记)
  10. 机器人防火墙出击 提升在线业务的安全未来