重载和覆写
重载 | 覆写 |
---|---|
方法名相同 | 方法名相同 |
返回值类型可以不相同 | 返回值类型相同 |
参数列表必须不相同 | 参数列表相同 |
- 返回值类型小于等于父类被重写方法
- 访问权限大于等于父类被重写方法
- 声明为stati和final的方法不能被重写,构造方法不能被重写(构造方法属于static的)
重载
public class MyClass{
public void write(string str){}
public void write(string str,string target){}
public int write(id int,number int){}
}
覆写
JDK1.8之后,抽象类的权限默认是default
抽象类和接口的区别左上角搜索
public calss BaseClass{
public abstract void write(string str){}
}
public class SubClass{
public override void write(string str){}
}
Lamda表达式
- 括号内用逗号分隔的形参,是函数式接口内方法的参数
- 箭头符号:->
- 方法体:可以是表达式和代码块
- Runnable是一个函数式接口,其内部只有一个run()方法
- 因为run()方法没有参数,所以 -> 前面的 () 不需要声明形参
- run()方法的返回值类型是void,所以不需要return
- -> 后面的代码就是run()方法内的代码。
public class Demo {
public static void main(String[] args) {
runTreadByLamda();
}
public static void runTreadByLamda(){
Runnable runnable = () -> System.out.println("lamda up");
new Thread(runnable).start();
}
}
正则表达式
[重点]HBASE架构,存储流程
1.1 宏观架构
- Hmaster:HBase的主节点,负责整个集群的状态感知,负载分配,用户表的元数据管理。Region的分割合并。
- Region:HBase将一个表的所有数据按照RowKey的不同范围进行切分的逻辑单元,每个Region负责一定范围内数据的读写访问。
- RegionServer:HBase中真正负责管理Region的服务器,也就是为客户端进行表数据读写的服务器。负责Region的拆分,和底层HDFS的交互,StoreFile的合并。
- Zookeeper:负责整个HBase中的主从节点协调,主节点的选举,元数据的入口,集群节点之间的上下线感知。
- HDFS:HDFS作为数据的载体与HBase交互,存储HBase的系统文件,表的Region文件。
1.2 RegionServer的内部组件
- WAL:预写日志,Write-Ahead Log 作用:操作的日志预先写入到该日志中。
- Region负责一定范围内数据的读写访问,每个Region由多个Store组成,Store对应Table中的ColumnFamily的存储,即一个Store管理一个Region上的一个列簇。
- Store是HBase的存储核心,由MEMStore和StoreFile组成。每个Store有一个MEMStore和0-n个StoreFile。
- MEMStore是一个有序的内存缓冲区,用户写入数据首先放入MEMStore,MEMStore满了之后生成一个StoreFile,StoreFile数量达到一定阈值后,除法compact将多个StoreFile合并成一个。
[重点]HBase与MapReduce的集成
- MapReduce和HBase一起使用,HBase数据库只负责存储和读取。Hbase作为map的输入,输出任意指定(HDFS,Mysql,本地磁盘);从Hbase读取数据再写入另一个Hbase(输入输出都是Hbase)。
2.1 HBase Import TSV
import tsv 就是一个导入固定格式的工具, tsv的格式就是’/t’分割的文件
- 创建一张表,用于接收导入的TSV格式的文件
create 'importtsv','info','f1'
- 准备导入的数据
1 sunwen zhoukoudian 9800
2 yangyang shandong 1200
- 查看实例程序,提示如何进行导入
hadoop jar /opt/app/hbase-1.3.1/lib/hbase-server-1.3.1.jar importtsv -Dimporttsv.columns=HBASE_ROW_KEY,info:name,f1:location,f1:age importtsv /import.tsv
HBASE_ROW_KEY :代表rowkey ,要导入的数据必须上传到HDFS上
2.2 Import CSV导入
csv就是按照逗号来分割的文件
- 创建一张表,接收用于导入csv格式的文件
create 'importcsv','info','f1'
- 准备测试数据
1,sunwen,zhoukoudian,92
2,yangyang,hebian,89
- 把数据上传到HDFS上
hdfs dfs -put /data/import.csv /
- 导入
hadoop jar /opt/app/hbase-1.3.1/lib/hbase-server-1.3.1.jar importtsv -Dimporttsv.separator=, -Dimporttsv.columns=HBASE_ROW_KEY,info:name,f1:location,f1:age importcsv /import.csv