java - 多个文件作为 Hadoop Dfs 和 mapreduce 的输入

标签 java hadoop mapreduce hdfs

通常我们将一个文本文件作为 java 文件的输入(比如在简单的字数统计问题的情况下)。相反,现在我有 100 个 csv 文件,我想将其作为我的 java 代码的输入。(所有文件不能简单地合并为 1 个文件)。试图预测给定 100 只股票的最大/最小股票波动率,因此每个 csv 文件都是唯一的。 那么,如何将csv文件的整个文件夹作为输入流提供给java程序。

最佳答案

解决方案 1:为了解决这个问题,我们可以使用 FileInputFormat.addInputPaths() 方法,它可以采用逗号分隔的多个输入列表,我们可以将其写为

FileInputFormat.addInputPaths(“file0,file1,....”)

假设需要分析 2 个文件以及使用 Facebook 和 youtube 服务的人员列表(需要其中的一个输出文件)

我们有两个文件 facebook.txt 和 youtube.txt

Path YoutubePath = new Path(args[0]);
Path FacebookPath = new Path(args[1]);
Path outputPath = new Path(args[2]);
MultipleInputs.addInputPath(job, FacebookPath, TextInputFormat.class, JoinFacebookMapper.class);
MultipleInputs.addInputPath(job, YoutubePath, TextInputFormat.class, YoutubeMapper.class);
FileOutputFormat.setOutputPath(job, outputPath);

在代码中添加以下行将产生多个文件,以便在单个 map reduce 作业中传递。

您可以将整个文件夹作为参数传递

关于java - 多个文件作为 Hadoop Dfs 和 mapreduce 的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46997404/

相关文章:

java - 如何制作可点击的图片?

hadoop - 在具有困惑数据且未修改时间列的表上以sqoop增量导入

java - 使用 AWS Java SDK 和 Hadoop 将项目放入 DynamoDB 时出错

hadoop - 如何使用MapReduce计算给定推文集中的所有主题标签?

hadoop - 如何防止 hadoop 损坏的 .gz 文件

java - JPA 与实体的一对多关联 @Inheritance(strategy=InheritanceType.JOINED)

java - Java 中的 URL 问题

javascript - 如何使用 CouchDB 的 reduce() 函数?

java - 不允许数组列表中的对象重复

java - 运行 mapreduce 程序时出现 "Java Heap space Out Of Memory Error"