1、参考文档:
http://www.elasticsearch.org/guide/en/elasticsearch/hadoop/current/configuration.html
http://www.elasticsearch.org/guide/en/elasticsearch/hadoop/current/mapreduce.html#_emphasis_old_emphasis_literal_org_apache_hadoop_mapred_literal_api
2、Mapreduce相关配置
//以下ES配置主要是提供给ES的Format类进行读取使用
Configuration conf = new Configuration();
conf.set(ConfigurationOptions.ES_NODES, "127.0.0.1");
conf.set(ConfigurationOptions.ES_PORT, "9200");
conf.set(ConfigurationOptions.ES_INDEX_AUTO_CREATE, "yes");
//设置读取和写入的资源index/type
conf.set(ConfigurationOptions.ES_RESOURCE, "helloes/demo"); //read Target index/type
//假如只是想检索部分数据,可以配置ES_QUERY
//conf.set(ConfigurationOptions.ES_QUERY, "?q=me*");
//配置Elasticsearch为hadoop开发的format等
Job job = Job.getInstance (conf,ElasticsearchIndexMapper.class .getSimpleName());
job.setJarByClass(ElasticsearchIndexBuilder.class );
job.setSpeculativeExecution(false );//Disable speculative execution
job.setInputFormatClass(EsInputFormat.class );
//假如数据输出到HDFS,指定Map的输出Value的格式。并且选择Text格式
job.setOutputFormatClass(TextOutputFormat.class );
job.setMapOutputValueClass(Text.class );
job.setMapOutputKeyClass(NullWritable.class );
//如果选择输入到ES
job.setOutputFormatClass(EsOutputFormat.class );//输出到
job.setMapOutputValueClass(LinkedMapWritable.class );//输出的数值类
job.setMapOutputKeyClass(Text.class ); //输出的Key值类
job.setMapperClass(ElasticsearchIndexMapper.class );
FileInputFormat.addInputPath (job, new Path("hdfs://localhost:9000/es_input"));
FileOutputFormat.setOutputPath (job, new Path("hdfs://localhost:9000/es_output"));
job.setNumReduceTasks(0);
job.waitForCompletion(true );
3、对应的Mapper类ElasticsearchIndexMapper
public class ElasticsearchIndexMapper extends Mapper {
@Override
protected void map (Object key, Object value, Context context)
throws IOException, InterruptedException {
//假如我这边只是想导出数据到HDFS
LinkedMapWritable doc = (LinkedMapWritable) value;
Text docVal = new Text();
docVal.set(doc.toString());
context.write(NullWritable.get(), docVal);
}
}
4、小结
hadoop-ES读写最主要的就是ESInputFormat、ESOutputFormat的参数配置(Configuration)。
另外 其它数据源操作(Mysql等)也是类似,找到对应的InputFormat,OutputFormat配置上环境参数。
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com