分享

请教熟悉mapreduce的大牛Configuration类的get方法问题~

dsy198816 发表于 2016-12-14 11:53:24 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 8 10156
public class XMLReader extends RecordReader<Text, Text> {

        public static final String ELEMENT_NAME = "elementName";
       
        private InputStream _fileIn;
        private long _start;
        private long _end;
        private long _current;
        private boolean _eof = false;
        private boolean _firstOnly = false;
       
        private KeyString[] _keyString;
        private Text _key;
        private StringBuilder _value;
       
        private byte[][] _startTag;
        private byte[][] _endTag;
       
        private int [] _matchingStartTag;
        private int [] _matchingEndTag;

        private byte[] _buffer;
        private int _bufferPos;
        private int _bufferRead;
       
        @Override
        public void initialize(InputSplit inputSplit, TaskAttemptContext context) throws IOException, InterruptedException {

                FileSplit split = (FileSplit) inputSplit;
                Configuration configuration = context.getConfiguration();
                String key = configuration.get(ELEMENT_NAME);


通过写文件打印输出发现,configuration.get 返回值为NULL       configuration.get(ELEMENT_NAME) 这句代码是什么含义?ELEMENT_NAME = "elementName"; 这个字符串的具体含义是什么?在配置里需要配置吗?

已有(8)人评论

跳转到指定楼层
dsy198816 发表于 2016-12-14 11:53:57
这是书上的一个例子
回复

使用道具 举报

qcbb001 发表于 2016-12-14 12:29:22
dsy198816 发表于 2016-12-14 11:53
这是书上的一个例子

这是读取xml文件,因此需要把你的xml文件贴出来看下
回复

使用道具 举报

dsy198816 发表于 2016-12-14 14:49:13
configuration.get(ELEMENT_NAME)  这是个函数返回值为空 和这个函数是干嘛的和XML文件有关系吗?它是读取XML里的某个内容吗?
我随便读取的一个xml.
<?xml version="1.0" encoding="UTF-8"?>

<configuration>
        <property>
                <name>hbase.zookeeper.quorum</name>
                <value>"Zookeeper IPs"</value>
        </property>
        <property>
                <name>hbase.zookeeper.property.clientPort</name>
                <value>2181</value>
        </property>
        <property>
                <name>fs.default.name</name>
                <value>"name node URL"</value>
        </property>
        <property>
                <name>hadoop.job.ugi</name>
                <value>hadoop, hadoop</value>
        </property>
</configuration>
回复

使用道具 举报

dsy198816 发表于 2016-12-14 14:54:02
configuration.get(ELEMENT_NAME)  求解释下这句代码的具体含义?因为调试发现它返回值为空,然后任务失败了
回复

使用道具 举报

dsy198816 发表于 2016-12-14 15:15:01
configuration.get(ELEMENT_NAME)  求解释下这句代码的具体含义?因为调试发现它返回值为空,然后任务失败了
回复

使用道具 举报

nextuser 发表于 2016-12-14 19:28:31
dsy198816 发表于 2016-12-14 15:15
configuration.get(ELEMENT_NAME)  求解释下这句代码的具体含义?因为调试发现它返回值为空,然后任务失败 ...

ELEMENT_NAME替换为hbase.zookeeper.quorum,然后在替换为比如fs.default.name,看看输出什么值?

get方法是获取对应的值

更多:

使用Configuration类的一般过程是:构造Configuration对象,并通过类的addResource()方法添加需要加载的资源;然后就可以使用get*方法和set*方法访问/设置配置项,资源会在第一次使用的时候自动加载到对象中。

推荐参考
hadoop通过Configuration对象自定义配置文件
http://www.aboutyun.com/forum.php?mod=viewthread&tid=10910

hadoop Configuration类解析【小知识分享】
http://www.aboutyun.com/forum.php?mod=viewthread&tid=13166

回复

使用道具 举报

dsy198816 发表于 2016-12-16 20:09:01
感谢啊学习了
回复

使用道具 举报

ggggying12 发表于 2017-2-22 18:19:30
好好学习,天天向上
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条