infiniDB在linux下完成倒库

来源:互联网 发布:mac上能玩的热门网游 编辑:程序博客网 时间:2024/04/30 09:02

在网看到自己的文章被四处烂用,经常搜到自己的文章。关键是,你能把我头像删除了不,有本事,你

把网址也给出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

 

0 0