infiniDB在linux下完成倒库
在网看到自己的文章被四处烂用,经常搜到自己的文章。关键是,你能把我头像删除了不,有本事,你
把网址也给出http://blog.csdn.net/longshenlmj/article/details/17920621
infiniDB列式数据库,查询速度快。但维护速度慢,增删改 特别慢,不适合大数据量操作。
在mysql,大数据量查询慢,但维度快(增删改快)。
方案,mysql下,入库每天的数据,按天处理和维护数据。导入infiniDB
一,连接数据库:Navicat连接。建立mysql和infiniDB的数据表结构。
mysql数据由kettle导入,并完成相关逻辑处理,如去重,去空等(复杂按经验分析)。
二,本机mysql倒出表
用kettle设计一个自动化部署,将mysql数据表导出成tbl格式文件。网上有Smoodo @ freenode.net ##pentaho做的,infiniDB export.kjb, 完成相关设置即可。
三,infiniDB倒入数据库,运行infiniDB的提供的开源shell脚本,自动导入。(如果infiniDB是utf8编码,要将tbl文件转化成utf8字符编码,否则入infiniDB会出现乱码。)
1,windows下编写的shell脚本,放到linux下不能运行,要用dos2unix命令转化。因为末尾的回车换行符不一样,判断用vim看,:%!xxd 查看十六进制是否出现0a0d,对应为"."。
2,在linux上,将所有的数据文件(.tbl文件)放到固定的/usr/local/Calpont/data/bulk/data/import路径下。infiniDB的处理路径是固定,暂时还不支持修改(只能将data1文件考到别的地方,用alias的方式访问)
注意,kette导出的tbl表,默认是用|作为delimiter。如果你的数据中包含|字符,就会出现错行。先go through 文件内容,确定文件中不包含该delimiter,否则就要更换,配合hive首选"\t"。
3,infiniDB倒库的shell脚本,放在/usr/local/Calpont/data/bulk/data/import路径下。基本内容如下:
cd /usr/local/Calpont/data/bulk/data/import;
/usr/local/Calpont/bin/colxml aso1 -t dimAppNameNew -d "\t" -j 1
/usr/local/Calpont/bin/cpimport -j 1
(1)区分大小写,没-l,默认找dimAppNameNew.tbl。-d "\t"是delimiter改成tab。
(2)一个shell脚本重复执行,会重复插入。只能执行一次。
(3)双引号无影响:/usr/local/Calpont/bin/colxml aso1 -t "dimAppNameNew" -l "dimappnamenew.tbl" -d "\t" -j 1 ,也能正确执行。
(4)shell脚本在不同路径下也能执行。前面的cd是为了让当前路径固定在指定路径下,修改后无影响,所以目前作用不清楚。(好像colxml会默认去找import路径下的文件,没时间去认证了。估计该也是该colxml文件里的配置参数)
(5)shell脚本按-j的配置生成job文件,在/usr/local/Calpont/data/bulk/job下。-j是设置对应的job数,cpimport会完成指定的job,导入。
(6)colxml或者cpimport 加-h可以查看参数信息:
/usr/local/Calpont/bin/colxml -h
显示如下
Usage: colxml [options] dbName
Options:
-d delimiter (default '|')
-e max error rows (numeric)
-h Print this message
-j Job id (numeric)
-l load file name
-n "name in quotes"
-p path for XML job description file that is generated
-s "description in quotes"
-t table name
-u user
-r Number of read buffers (numeric)
-c Read buffer size (numeric)
-w Write buffer size (numeric)
-x Extension of file name (default ".tbl")
-E EnclosedByChar (if data has enclosed values)
-C EscapeChar
-b debug level (1-3)
dbName - Required parm specifying the name of the database;
all others are optional
Example:
colxml -t lineitem -j 123 tpch
如具体的例子:
/usr/local/Calpont/bin/colxml ssp_bi_cloud_saiku -x tbl -d "\t" -l "dimAd.tbl" -j 1
/usr/local/Calpont/bin/colxml ssp_bi_cloud_saiku -t dimad -x tbl -d "\t" -l "dimAd.tbl" -j 1
/usr/local/Calpont/bin/colxml ssp_bi_cloud_saiku -d "\t" dimad -j 1
最后,saiku连接:xml文件已建好,在linux下,放到saiku的安装目录下,看是否连接成功,能否使用。
datasorces 里面的设置名称可以使用字母数字下划线。名字设置时随便无影响,但引用时要正确。、
每个文件文件只包含一个配置(下面会覆盖上面的)
myblog:http://blog.csdn.net/longshenlmj/article/details/17920621