有时候需要在Map类中的map函数中获取当前split所读取的文件名。
在旧版mapred下面实现方法如下:
// 获得输入文件的路径名
String path=((FileSplit)reporter.getInputSplit()).getPath().toString();
//使用Reporter reporter对象来获取,在新版mapreduce中,
Reporter reporter被封装在类MapContext中(StatusReporter reporter),
在map函数中就是Context context,实现方法应该类似,有兴趣的朋友可以试试。
-----------分割线----------->
import org.apache.hadoop.mapreduce.InputSplit;
import org.apache.hadoop.mapreduce.lib.input.FileSplit;
InputSplit inputSplit = context.getInputSplit();
String fileName = ((FileSplit) inputSplit).getPath().toString();
刚刚搜索了下,新版中实现如下(转载,未测试,方法应该正确)
以下转载:
在mapper中获取当前正在处理的HDFS文件名/HDFS目录名
有时候,Hadoop是按行来对数据进行处理的,由于对每一行数据,map()函数会被调用一次,我们有时可以根据文件名/目录名来获取一些信息,从而把它们输出,例如,目录名中包含了日期,则我们可以取出来并输出到Reducer。在map()函数中,我们可以这样取文件名:
1
2
|
InputSplit inputSplit = context.getInputSplit(); String fileName = ((FileSplit) inputSplit).getName(); |
假设当前正在处理的HDFS文件路径为:/user/hadoop/abc/myFile.txt,则上面的 fileName 取到的是“myFile.txt”这样的字符串。但如果要获取其目录名“abc”,则可以这样做:
1
2
|
InputSplit inputSplit = context.getInputSplit(); String dirName = ((FileSplit) inputSplit).getPath().getParent().getName(); |
相关推荐
在Windows或Linux系统中,你需要将`HADOOP_HOME`添加到系统的PATH环境变量中,这样就可以在命令行中直接运行Hadoop相关的命令,如`hadoop fs -ls`来查看HDFS中的文件。 描述中提到的“把它放到本地”,这里的“它”...
本文将深入探讨如何使用Hadoop和MapReduce进行高效的Join查询,并解析如何通过`hadoop_join.jar`这个工具来实现这一过程。 Hadoop是Apache软件基金会开发的一个开源分布式计算框架,它的核心组件包括HDFS(Hadoop ...
Hadoop_进行分布式并行编程.doc Hadoop_进行分布式并行编程.doc
标题 "hadoop-streaming-2.8.0_jar_2.8.0_hadoop_streaming_" 暗示我们正在讨论的是 Hadoop Streaming 的一个版本,具体是2.8.0。Hadoop Streaming 是一个 Hadoop 组件,允许用户使用可执行的脚本(如 Python 或 ...
标题中的"hadoop_dll_winutil_2.7"指的是针对Hadoop 2.7版本的一个特定Windows平台的库组件,它包含了使Hadoop能够在Windows操作系统上正常运行所必需的动态链接库(DLL)文件。这些DLL文件是Hadoop与Windows操作...
2. hadoop_webdav:表明讨论的是Hadoop与WebDAV的结合使用。 3. hadoop_系统:暗示可能涉及Hadoop集群的管理和配置。 4. hadoop2.0_d:指的是Hadoop的2.0版本,这个版本引入了许多重要的改进和特性。 5. hdfs:...
hadoop_spark_数据算法hadoop_spark_数据算法hadoop_spark_数据算法hadoop_spark_数据算法
【标题】"hadoop_class-master.zip_Master Class_hadoop_社交" 涉及到的核心知识点是Hadoop在处理社交网络数据时的应用,特别是在社交网络分析中的三角形统计和倒排索引的实现。 Hadoop是一个开源的分布式计算框架...
总之,`hadoop_dll_winutil_2.7.1` 提供了一套工具,使得 Windows 用户能够在本地环境中模拟和开发 Hadoop 应用程序,这涉及到了一系列与安装、配置、调试和优化相关的重要知识点。对于那些在非 Linux 环境下工作的...
这里提到的"windows连接Hadoop需要的文件winutils和hadoop_dll"正是为了解决这个问题。这两个文件是针对Windows用户设计的,以便他们在本地开发环境中能够顺利地与运行在Linux服务器上的Hadoop集群进行通信。 首先...
标题中的"hdfs.rar_hadoop_hadoop ubuntu_hdfs_分布式系统_基于hadoop"表明这个压缩包包含了与在Ubuntu操作系统上安装和使用Hadoop和HDFS相关的资料。Ubuntu是一个广泛使用的Linux发行版,适合部署大型分布式系统如...
下载完成后,需要将它们放置在正确的目录结构下,比如在 `%HADOOP_HOME%\bin` 目录下,并且确保添加`HADOOP_HOME`到系统环境变量中,这样命令提示符才能找到并执行这些文件。 为了使Hadoop在Windows上正常工作,还...
标题"hadop_dll2.6.0_64bit_windows_dll_hadoop_"表明我们正在讨论的是针对Windows操作系统的一个64位Hadoop版本,特别地,这个版本包含了用于Windows环境的动态链接库(DLL)文件,以便在Windows上支持Hadoop的执行...
标题“hadoop-test-report.zip_hadoop_hadoop word_压力测试报告”指出这是一个关于Hadoop的测试报告,特别关注了Hadoop在处理Word数据时的压力测试情况。"hadoop_test_report.doc"是压缩包内的文档,很可能是详细的...
标题中的"hadoop_windows_tools.rar"暗示了这是一组专为Windows用户定制的Hadoop工具,其中可能包括了使Hadoop在Windows上运行所必需的一些组件和配置。描述提到该插件适用于Hadoop2.7.6版本,这意味着这些工具与...
2. **PATH变量**:将%HADOOP_HOME%\bin添加到系统PATH环境变量中,这样在任何地方都可以通过命令行直接执行winutils.exe。 3. **权限设置**:winutils.exe用于处理HDFS权限,因此可能需要管理员权限才能执行某些...
01_Hadoop_开篇_课程整体介绍.mp4 03_Hadoop_概论_大数据的特点.mp4 04_Hadoop_概论_大数据的应用场景.mp4 06_Hadoop_概论_未来工作内容.mp4 07_Hadoop_入门_课程介绍.mp4 11_Hadoop_入门_Hadoop优势.mp4 13_Hadoop_...
同时,将%HADOOP_HOME%\bin和%HADOOP_HOME%\sbin添加到PATH变量中,以便于命令行调用Hadoop命令。 4. **配置Hadoop**:打开Hadoop的配置文件,主要涉及两个文件:`core-site.xml` 和 `hdfs-site.xml`。在`core-site...
当我们想要在Windows系统中模拟Hadoop集群,可以使用该插件 1.在没有中文路径下进行解压 ... 本地路径/hadoop_dll2.6.0_64bit/bin添加到环境变量,HADOOP_HOME=本地路径/hadoop_dll2.6.0_64bit/bin
Hadoop_Spark相关面试问题总结 - Hadoop知识库.pdf Hadoop_Spark相关面试问题总结 - Hadoop知识库.pdf Hadoop_Spark相关面试问题总结 - Hadoop知识库.pdf