栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Hadoop中传播自定义配置值

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Hadoop中传播自定义配置值

除非缺少我的东西,否则如果您有一个

Properties
包含M /
R作业中所需的每个属性的对象,则只需要将
Properties
对象的内容写入Hadoop
Configuration
对象。例如,如下所示:

Configuration conf = new Configuration();Properties params = getParameters(); // do whatever you need here to create your objectfor (Entry<Object, Object> entry : params.entrySet()) {    String propName = (String)entry.getKey();    String propValue = (String)entry.getValue();    conf.set(propName, propValue);}

然后在M /
R作业内部,您可以使用该

Context
对象
Configuration
在映射器(
map
函数)或化简器(函数)中找回自己
reduce
,如下所示:

public void map(MD5Hash key, OverlapDataWritable value, Context context)    Configuration conf = context.getConfiguration();    String someProperty = conf.get("something");    ....}

需要注意的是使用时

Configuration
的对象,您还可以访问
Context
setup
cleanup
方法,有用的,如果需要做一些初始化。

同样值得一提的是,您可能可以直接

addResource
Configuration
对象调用该方法以将属性直接添加为
InputStream
一个文件或文件,但是我认为这必须是像常规Hadoop
XML配置一样的XML配置,因此这可能会显得过大。

编辑
:对于非字符串对象,我建议使用序列化:您可以序列化对象,然后将它们转换为字符串(例如,可能使用base64对其进行编码,因为我不确定如果使用不寻常的字符会发生什么情况),然后在mapper
/ reducer上,从您从内部属性获得的字符串中反序列化对象

Configuration

另一种方法是执行相同的序列化技术,而是写入HDFS,然后将这些文件添加到中

DistributedCache
。听起来有点矫kill过正,但这可能行得通。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/451564.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号