HBase flush为什么以region为单位?

wangdoudou 2017-09-19 03:35:38
请问各位大侠,HBase进行flush的时候为什么以region为单位而不是以MemStore为单位?
一般想着哪个满了就flush哪个就好,结果HBase却要把所有的进行flush,有什么原因吗?
...全文
424 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dinghun8leech 2017-12-01
  • 打赏
  • 举报
回复
可能是为了控制总的内存占用量吧。不过每次都flush所有的memstore,确实会生成许多细小的碎文件。
碧水幽幽泉 2017-09-21
  • 打赏
  • 举报
回复
input、input()、put和put()的含义:

put()函数:把数值型或字符型变量转为字符型变量
input()函数:将字符型变量转化为数值型变量
put: 在日志窗口显示变量的值
input: 读取变量

总结:
input: 是输入,读取数据到数据集。put是输出,比如讲数据输入输出到指定的文件

SAS宏语句介绍
%*comment 注释语句。
%COPY 拷贝语句,从SAS库中拷贝指定的对象。
%DISPLAY 显示宏语句窗口。
%GLOBAL 创建一个全局宏变量。
%INPUT 在宏执行过程中为宏变量赋值。
%LET 创建一个宏变量,同时对其进行赋值。
%MACRO 标识一个宏定义的开始,指定所定义宏的名称及参数等。
%MEND 标识一个宏定义的结束。
%PUT 将指定的文本或宏变量的值写入log窗口。
%SYMDEL 删除指定的宏变量。
%SYSCALL 调用SAS字程序。
%SYSEXEC 提交操作系统命令。
%SYSLPUT 在远程主机或服务器上定义一个新的宏变量或修改一个已存在宏变量的值。
%SYSRPUT 将远程主机上一个宏变量的值赋给本地主机上的宏变量。
%WINDOW 定制一个用户自定义的窗口。
仅在宏定义中使用的宏语句

宏语句 功能含义
%ABORT 中止当前宏的运行。
%DO 开始一个%do代码块。
%DO,Iterative 开始一个%do循环语句。
%DO %UNTIL 执行指定的语句直至指定的条
%DO 当指定的条件为真时执行指定
%END 标识一个%do代码块(包括上述
%GOTO 使宏运行进程跳跃到指定的标
%IF-%THEN/%ELSE 条件语句,有条件执行指定的
%label: 在特定的代码位置上给出一个
%LOCAL 创建一个局部宏变量。
%RETURN 引导当前宏的正常终止。
碧水幽幽泉 2017-09-21
  • 打赏
  • 举报
回复
SAS基础知识:
SAS程序通常分为数据步和过程步,一段SAS 程序根据目的和需要可以有0到多个数据步(Data)和0到多个过程步(Proc),还可以有系统选项语句、ODS语句等全局语句。
1.数据步(Data Step)
以关键词Data开头,可由多条语句构成,结束标志可以是空语句、Run 语句、过程步或下一步数据步。
数据步功能有:
(1)从外部文件中读取数据;
(2)将数据写入到外部文件中;
(3)读取SAS数据文件和视图;
(4)创建SAS数据文件和视图。

2.过程步(Proc Step)
以关键词Proc 开头,可由多条语句构成,结束标志是Run或Quit 语句。过程步的功能有:
(1)调用 SAS 过程(SAS Procedures)分析和处理SAS数据集形式的数据,或执行其他分析;
(2)将分析结果以报表、图表的形式输出,或输出成 SAS数据集、外部文件;
(3)生成SQL查询;
(4)数据操作和管理。

SAS数据集:
SAS DataSets 可以看作由若干行和若干列组成的表格,类似于一个矩阵,但是各列可以取不同的类型值,
比如整数值、浮点值、时间值、字符串、货币值等等。SAS数据集存放在以特殊格式存放的二进制文件中,
我们用一个SAS的逻辑名称来使用SAS数据集而不需关心它到底如何存储在磁盘上。
数据集的每一行叫做一个观测(Observation),每列叫做一个变量(Variable)。SAS数据集等价于关系数据库中的一个表,
在数据库术语中,一个观测称作一个记录,一个变量称作一个域。

DATA _NULL_; 表示本数据步不生成数据集 等价于DATA;
Data步本身就是一个循环,所以_N_记录的是循环的次数,一般就是已读入数据的条数;
_ERROR_记录的是发生错误的标识,错误为1,正确为0

PRINT过程语法格式:
PROC PRINT DATA=SAS数据集 NOOBS; **NOOBS选项,在PRINT过程中可以用NOOBS选项去掉OBS列;
VAR 分析变量1 分析变量2 ... 分析变量N; **控制变量的出现与否以及出现的顺序
WHERE 表达式; **控制哪些观测将出现在报表中;它的表达式主要是操作数和操作符
SUM 求和变量;
RUN;

对数据进行分组并求每组小计,用PRINT过程的BY语句,但必须先对相应的变量进行排序;
PROC PRINT DATA=TEMP.EMPDATA;
BY JOBCODE;
SUM SALARY;
PAGEBY JOBCODE; /*使产生的报表按组分页*/
RUN;

PROC MEANS过程对数据集进行统计分析,可以得到非缺失值数、缺失值数、权重和、均值、总和、最小值、最大值、全距、未校正平方和、校正平方和、方差、标准差、标准误、变异系数、偏度、t值、大于t值概率,共17个统计量.

dbms(文件类型)的值有: ACCESS/ACCESSCS, CSV, DBF/DBFMEMO, DLM, DTA, EXCEL/EXCEL4/EXCEL5/EXCELCS, JMP, PARADOX, PCFS, SAV, TAB, WK1/WK3/WK4, XLS/XLSX

SAS中的日期(d)、时间(t)、日时(dt)常数 
如: d1='01JAN80'd、t1='9:25:19't、dt1='18JAN80:9:27:05'dt。

1.要删除每页顶部的日期,可使用 NODATE 系统选项。请复制下面的 OPTIONS 语句,并将其粘贴到程序的顶部:
options nodate;

2.要替换默认标题,可使用TITLE语句。请复制下面的行,将其添加到 PRINT 过程的 RUN 语句之上:
title "Product Sales Report";
通过在 PROC 步中引用 TITLE 语句,该标题便可应用到过程输出中。

3.要删除 Obs 列并使用列标签,可使用 PROC PRINT 语句中的选项。
更改 PROC PRINT 语句,向其添加 LABEL 和 NOOBS 选项。PROC PRINT 语句应如下显示:
proc print data=test label noobs;
4.%eval
在给宏变量赋值时,使用此函数将值扩起来如:%EVAL(值),若值中含表达式,则先计算表达式的值,再将结果赋给宏变量
e.g: %do i=1 % to %eval(&Num.);
5.proc means过程时,会对所有数值型变量进行操作,得到各变量的非缺失观测数N,均值MEAN,标准差STD DEV,最大值Max和最小值Min。
碧水幽幽泉 2017-09-21
  • 打赏
  • 举报
回复
SAS时间格式转换:

data _null_;
x1='10MAY2017'd;
x2=compress(put(x1,yymmdd10.),'-');
put x2=;
run;
在log窗口输出: x2=20170510

data _null_;
x1='20170510';
x2=put(input(x1,yymmdd8.),date9.);
put x2=;
run;
在log窗口输出: x2=10MAY2017

data test;
x1='20170510';
x2=input(x1,yymmdd8.);
x3=intnx('day',x2,1);
x4=compress(put(x3,yymmdd10.),'-');
put x4;
run;

在log窗口输出: x4=20170511

data test;
x1='20170510';
x4=compress(put(intnx('day',input(x1,yymmdd8.),1),yymmdd10.),'-');
put x4;
run;
在log窗口输出: x4=20170511

20,807

社区成员

发帖
与我相关
我的任务
社区描述
Hadoop生态大数据交流社区,致力于有Hadoop,hive,Spark,Hbase,Flink,ClickHouse,Kafka,数据仓库,大数据集群运维技术分享和交流等。致力于收集优质的博客
社区管理员
  • 分布式计算/Hadoop社区
  • 涤生大数据
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧