Rad*_*dAl 2 hadoop mapreduce amazon-emr emr
我正在开发一个代码来读取数据并将其写入HDFS使用mapreduce.但是,当我有多个文件时,我不明白它是如何处理的.映射器的输入路径是目录的名称,从输出中可以看出
String filename = conf1.get("map.input.file");
Run Code Online (Sandbox Code Playgroud)
那么它如何处理目录中的文件?
Ama*_*mar 10
为了获得输入文件路径,您可以使用该context对象,如下所示:
FileSplit fileSplit = (FileSplit) context.getInputSplit();
String inputFilePath = fileSplit.getPath().toString();
Run Code Online (Sandbox Code Playgroud)
至于如何处理多个文件:
在集群中的不同计算机上创建了几个映射器函数实例.每个实例接收不同的输入文件.如果文件大于默认的dfs块大小(128 MB),则文件将进一步拆分为更小的部分,然后分发给映射器.
因此,您可以通过以下两种方式配置每个映射器接收的输入大小:
dfs.block.size=1048576)mapred.min.split.size(这可以设置为大于HDFS块大小)注意: 只有输入格式支持拆分输入文件时,这些参数才有效.常见的压缩编解码器(例如gzip)不支持拆分文件,因此这些将被忽略.
| 归档时间: |
|
| 查看次数: |
8931 次 |
| 最近记录: |