- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试使用 CompositeTextInoutFormat
实现 Map-side join。但是,我在 Map reduce 作业中遇到以下错误,我无法解决。1. 在下面的代码中,我在使用 Compose 方法时出错,在设置 inputformat 类时也出错。错误如下所示。
The method compose(String, Class, Path...) in the type CompositeInputFormat is not applicable for the arguments (String, Class, Path[])
谁能帮忙
package Hadoop.MR.Practice;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapred.TextInputFormat;
import org.apache.hadoop.mapred.join.CompositeInputFormat;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.KeyValueTextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
//import org.apache.hadoop.mapred.join.CompositeInputFormat;
public class MapJoinJob implements Tool{
private Configuration conf;
public Configuration getConf() {
return conf;
}
public void setConf(Configuration conf) {
this.conf = conf;
}
@Override
public int run(String[] args) throws Exception {
Job job = Job.getInstance(getConf(), "MapSideJoinJob");
job.setJarByClass(this.getClass());
Path[] inputs = new Path[] { new Path(args[0]), new Path(args[1])};
String join = CompositeInputFormat.compose("inner", KeyValueTextInputFormat.class, inputs);
job.getConfiguration().set("mapreduce.join.expr", join);
job.setInputFormatClass(CompositeInputFormat.class);
job.setMapperClass(MapJoinMapper.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(LongWritable.class);
//Configuring reducer
job.setReducerClass(WCReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(LongWritable.class);
job.setNumReduceTasks(0);
FileOutputFormat.setOutputPath(job, new Path(args[2]));
job.waitForCompletion(true);
return 0;
}
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
MapJoinJob mjJob = new MapJoinJob();
ToolRunner.run(conf, mjJob, args);
}
最佳答案
我会说您的问题可能与混合 hadoop API 有关。您可以看到您的导入混合了 mapred
和 mapreduce
。
例如,您尝试将 org.apache.hadoop.mapreduce.lib.input.KeyValueTextInputFormat
与 org.apache.hadoop.mapred.join.CompositeInputFormat
一起使用> 这不太可能奏效。
您应该选择一个(我会说可能是 mapreduce
)并确保一切都使用相同的 API。
关于java - 无法在 Map Side Join 中使用 Composite textinputFormat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44884181/
什么是 KeyValueTextInputFormat 对应的 OutputFormat 类?我想在输出中的键和值之间放置一些分隔符。 最佳答案 TextOutputFormat 将写入 配对。 您可
根据我的理解,TextInputFormat 应该在换行符处准确拆分,但根据我在网站上看到的一些答案,我似乎错了。有没有人有更好的解释,哪个选项是正确的? 以下哪项最能描述 TextInputForm
我为hadoop 0.20.2写了一个简单的map任务,输入数据集由44个文件组成,每个大约3-5MB。任何文件的每一行都具有 int,int 格式.输入格式默认为TextInputFormat映射器
我是一个 hadoop 初学者。我遇到了this自定义 RecordReader 程序,一次读取 3 行并输出 3 行输入被提供给映射器的次数。 我能够理解为什么要使用 RecordReader,但是
我试图理解文档中说“TextInputFormat 用作纯文本文件的 InputFormat。文件被分成几行。换行符或回车符用于表示行结束。键是在文件中的位置,值为文本行" “位置”是什么意思?是文件
我正在使用 hadoop 核心 0.20.2,在尝试为我的工作设置输入格式时遇到了不兼容类型的问题。我只是想让一个简单的 wordcount 程序运行。 这是我的主要方法: public static
我正在尝试使用 Hadoop 进行 WordCount。我想使用 XmlInputFormat.class 根据 XML 标记拆分文件。 XmlInputFormat.class 是 here Xml
我正在尝试计算方阵上每条对角线的总和。我正在使用 Python 和 Hadoop 流式处理,但我找不到任何方法来配置 Hadoop 流式处理以获取每行的偏移量 this guy说,使用 TextInp
在 spark2.0.1 和 hadoop2.6.0 中,我有很多文件用 '!@!\r' 分隔,而不是通常的换行符\n,例如: ====================================
谁能给我一个我们必须使用 KeyValueTextInputFormat 和 TextInputFormat 的实际场景?? 最佳答案 TextInputFormat 类将源文件的每一行转换为键/值类
我必须编写一个 map reduce 批处理(使用 org.apache.hadoop.mapreduce.* API)来处理具有以下属性的文本文件: ISO-8859-1编码。 类似 CSV 分隔符
在 Spark 中,可以设置一些 hadoop 配置设置,例如 System.setProperty("spark.hadoop.dfs.replication", "1") 这有效,复制因子设置为
我正在尝试使用 CompositeTextInoutFormat 实现 Map-side join。但是,我在 Map reduce 作业中遇到以下错误,我无法解决。1. 在下面的代码中,我在使用 C
如果我们使用 TextInputFormat,我想知道 KeyClass 和 ValueClass 的数据类型是什么。 In Ref,来自 Hadoop 权威指南第 4 版。 “输入类型是通过输入格式
在浏览 CustomInputFormat 主题时,我了解到我们有一些默认的输入格式,例如 TextInputFormat、KeyValueInputFormat、SequencefileInputF
将 textinputformat.record.delimiter 设置为非默认值,对于加载多行文本很有用,如下面的演示所示。 但是,我无法在不退出 cli 并重新打开它的情况下将此参数设置回其默认
我是一名优秀的程序员,十分优秀!