AccumuloHiveConstants--Hive源码读取第一天

AccumuloHiveConstants–Hive源码读取第一天

有心读取Hive源码,但又怕自己坚持不下去,就把apache上hive3.1的包下载下来,准备手敲一遍,然后把心得体会写在博客上,以此来监督自己。
首先找到一个原始类,没有内部引用,全是引用java包的这种类来读,AccumuloHiveConstants这个类,路径\apache-hive-3.1.1-src\accumulo-handler\src\java\org\apache\hadoop\hive\accumulo,其中accumulo中的ColumnEncoding类引用了这个类,constants的中文意思是不变的恒定的,初步判断开头没有选错,开心。

package org.apache.hadoop.hive.accumulo;
import java.nio.charset.Charset;

看他引用了java里的java.nio.charset.Charset,百度博客上说这个类是用来定义在自己字节和Unicode字符和Unicode字符之间转换的chaset、解码器和编码器,从字面意思上也能看出来chaset的不就是管编码这类事的吗,这里不做深究,但nio和io的区别是什么呢?

IO: 面向流 、 阻塞IO、 无选择器
NIO: 面向缓冲、 非阻塞IO 、 有选择器

什么是面向流?什么是面向缓冲?
JavaIO面向流意味着每次从流中读一个或多个字节,直至读取所有字节,它们没有被缓存在任何地方。此外,他不能前后移动流中的数据。如果需要前后移动从流中读取的数据,需要先将缓冲到一个缓冲区。
JavaNIO的缓冲导向方法略有不同。数据读取到一个它稍后处理的缓冲区,需要时它可在缓冲区中前后移动。这就增加了处理过程中的灵活性。但是,还需要检查是否该缓冲区中包含所有你需要处理的数据。而且,需确保当更多的数据读入缓冲区时,不要覆盖缓冲区里尚未处理的数据。
详细介绍可以点击http://ifeve.com/java-nio-vs-io/

public class AccmuloHiveConstants{
   //刚看到这我是有点慌的,我去,这是大神们在干嘛,但是敲完才发现,这不就是在定义几个常量吗,初步估计就是给符号定义成常量,所以大神褪去光环,不还是要一步步搬砖
   public static final String ROWID=":rowID";
   public static final char COLON=":",COMMA=',',ESCAPE='\\',POUND='#',ASTERISK='*';

public static final String ESCAPED_COLON=Character.toString(ESCAPE)+Character.toString(COLON);

//Escape the escape
public static final String ESCAPED_COLON_REGEX=Character.toString(ESCAPE)+Character.toString(ESCAPE)+Character.toString(COLON);
pulic static final String ESCAPED_ASTERISK=Character.toString(ESCAPE)+Character.toString(ASTERISK);

//Escape the escape,and escape the asterisk
public static final String ESCAPED_ASERTISK_REGEX=Character.toString(ESCAPE)+Character.toString(ESCAPE)+Character.toString(ESCAPE)+Character.toSting(ASTERISK);

public static final Charset UTF_8=Charset.forName("UTF-8");

猜你喜欢

转载自blog.csdn.net/weixin_42474635/article/details/89373992