<< Click to Display Table of Contents >> 增量导入数据 |
增量导入数据,即定期的按照某种条件生成数据集市文件。
执行增量导入数据时,默认会在与 bihome 同级 cloud 文件夹中生成相应的文件夹及文件前缀。以现实的例子说明,由于数据库中的数据可能会更改,故用户可创建增量导入数据任务每天八点对特定的数据集中的数据进行监视,以便用户及时作出处理。设定该任务后,每天八点将会在用户指定的文件夹中生成指定文件前缀的文件,此文件中载有数据库查询中的信息,用户通过这些文件即可了解数据的变动情况。
8.5版本中,针对Byte,Short,Int类型的数据做了进一步优化,
用户进行增量导入数据时,也可以在 bihome\bi.properties 中进行本地数据集市的配置。应在 bi.properties 中添加如下语句。
8.5.1版本中,添加了以倒排索引的方式增量导入集市的功能,能够有效提升带过滤条件的数据集市查询速度。
开启倒排索引功能,会对系统产生额外的资源压力,所以默认处于关闭状态。建议有大数据量的集市数据含有过滤需要时使用倒排索引。
用户在使用倒排索引时,需要在属性文件bi.properties中,配置dc.inverted.supported=true ;dc.inverted.ratio=3.1 来打开功能。
语句 |
说明 |
---|---|
dc.node.types=narc |
申明本机的数据集市节点的类型。分别是 n-Naming 节点 ,m–Map 节点 ,r–Reduce 节点 ,c-Client 节点。一般是这些值的组合。nmrc 是表明本机节点是所有类型的组合。此条属性是必须的,值是这些类型的组合。 |
dc.fs.naming.paths=c\:/bihome/cloud/qry_naming.m |
定义命名节点存储元数据的文件路径。文件路径可以是绝对路径,也可以是相对 bihome 的相对路径。例如 “/cloud/qry_naming.m” 是指相对 bihome 目录下的 cloud目录里的 qry_naming.m 文件。此条属性是必须的。 |
dc.fs.sub.path=c\:/bihome/cloud/qry_sub.m |
定义 Map/Reduce 节点存储元数据的文件路径。命名规则同上。此条属性是必须的。 |
dc.fs.physical.path=c\:/cloud |
定义 Map/Reduce 节点存储物理数据的文件夹。命名规则同上。此条属性是必须的。 |
dc.io.ip=192.168.1.99 |
定义本机的 IP,尤其在多网卡的时候。 |
➢注意:用户需要把 c\:/cloud 更改成自己的路径,ip 需要更改成自己主机的 ip。在更改路径时,用户需要注意路径的格式,例如 c\:/cloud 不能写成 c\:cloud,也不能写成 c:\:\cloud。
新建增量导入数据的步骤如下:
1. 新建增量导入任务。新建该任务有两种方法。
第一种方法:在新建作业的任务区域,或新建任务界面,选择任务类型为“增量导入数据”,如下图所示。
在数据集列表中,选择已有的数据集,必填项。
第二种方法:在创建数据集界面,点击增量导入数据,如下图所示,系统会自动创建该数据集的增量导入作业,并跳转至调度任务界面。
2.8.5版本中,对于高精度进行了进一步的优化,使得在数据量较大时进行累计运算不会出现精度偏差,并且加入了集市存储数值型数据支持精度灵活设定,点击数据集右侧的编辑格式按钮,显示数据集中存在的double,float类型的数据列,将存储精度设置在集市文件夹上,支持不同的集市文件夹可以有不同的保存精度,double,float类型的数据列默认值均为4,如下图所示。
3. 输入进行增量导入数据生成的数据集市文件夹名称,也可以选择已生成的数据集市文件夹,必填项。当用户输入或选择了一个已经存在的数据集市文件夹,系统会根据追加与否,给出重名提示,防止用户在未知情况下覆盖了已经存在的数据集市文件夹,删除了已经存在的数据集市文件,造成数据丢失。如下图所示:
4. 设定执行增量导入数据生成的文件名称。
5. 设置其他属性。
【维度表】当用户勾选维度表时,对于分布式系统的星形数据(一个大表,若干个小表),可以将小表的数据复制到每个 Map Node,执行 Map side join,用来提高数据的读取与处理速度。
【追加】当用户勾选追加时,生成的数据集市文件名将会进行排序。如用户创建一增量导入数据任务,即每天八点对某一数据集中的数据进行收集生成数据集市文件,第一天生成的文件名称为 test0,第二天生成的文件名称为 test1,以此类推。
当用户不勾选追加时,倘若当前系统中已经存在该集市文件夹,则会创建新的数据集市文件夹来替代。如用户创建一增量导入数据任务,即每天八点对某一数据集中的数据进行收集生成数据集市文件,第一天生成的文件放入文件夹 folder0 中,第二天会生成新的数据集市文件夹 folder0 来覆盖已经存在的文件夹以及文件。
【字典列】当用户选择以字典数据方式存储字符串列时,系统会将指定字符串列映射成数值型数据。对字符串列的部分计算和分组以数值型数据进行,从而达到提高处理速度,减少内存占用的目的。系统返回最终结果时,会将数值还原成对应字符串。
【分片列】采用一致性哈希方式对数据列进行分片存储,当用户勾选分片列时,会自动弹出分片列对话框。
当两个数据集增量导入集市时,勾选分片列后选择列的数量;列的类型均匹配时:以分片列为链接条件,在组合时可以实现Mapsidejoin。
【分割】实现按列分割,并行导入集市的功能。当用户勾选分割时,会自动弹出分割对话框。分割类型分为平均分割和分组分割,平均分割只能选择一个分割列,默认为自动分割,分割份数由用户输入,默认值为4,如下图所示
当取消自动分割时,用户可以手动输入分割值,手动分割是按照分割值将数据进行分组,再将分组好的数据存放zb中,zb数量为设置分割份数,需要注意的是在输入表格的分割值时,如果分割值的数目超过【n-1,n+1】范围时,点击确定时候弹框提示,提示信息如下: 自定义分割值只能设置在【n-1,n+1】范围时,请删除多余行数的分割值。
如下图所示,将Double列,按照 Double<3 ; 3≤ Double ≤8 ; Double>8 ; Double为空 ,进行分割,分割份数为2份
分组分割不能填写分割份数,可以选择多个分割列。为了不影响导入数据的效率,建议分割列的列数不超过 10。分组分割可以自动生成 Meta 信息,以方便对数据集市中的数据进行过滤。其中,Meta 中的 key 为分割列对应的列名 ,Meta 中的 value 为分割列对应的值。当用户不勾选分割时,数据集市文件会按系统默认的设置进行生成。
6. 设置过滤条件。点击【编辑】按钮,弹出过滤器对话框,点击增加过滤条件,选择需要设置过滤的列,如下图所示。系统只会对满足过滤条件的数据执行增量导入动作。
7. 用户可通过脚本来实现对增量导入数据的控制。通过脚本用户可设定数据集市文件和数据集市文件夹的名称、传递参数、是否追加、以及设定数据集市文件的属性。在执行此任务时,脚本的优先级最高。
脚本语句 |
说明 |
举例 |
---|---|---|
folder |
创建一个数据集市文件夹 |
folder="CloudTest"; |
file |
创建一个数据集市文件 |
file="CloudFile"; |
append |
是否追加 |
append=true; |
setMeta |
给数据集市文件设定属性 |
setMeta("date",new Date(2012,9,19));//数据集市文件的 日期属性为2012,9,19,则在数据集市数据集中可通过过滤条件查看这个属性 |
param |
传递参数 |
param["market"]="East";//market是East的所有数据,参数market来自相应的数据集 |
8.当作业类型为增量导入数据并且运行成功时 , 在当前作业界面和历史作业界面的结果" 成功 ” 后会出现可以触发导入到集市的数据文件对话框的图标。
系统对成功导入到集市中的数据自动添加时间信息,信息的格式为:作业触发时间 _ 作业名称。在新建数据集市数据集时,可以通过此 Meta 信息过滤出某一次导入到集市中的全部数据。
❖删除追加的增量数据
在当前作业状态页面中,允许用户删除最后一次成功导入到集市中的数据,而保留之前导入的数据。如果用户通过追加的方式,连续多次将数据导入到集市,其中第二次导入到集市中的数据有误,那么用户可以在历史作业状态页面找到对应的作业执行记录,打开任务运行结果对话框,删除此次导入到集市中的数据,而保留其他数据。