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

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

infiniDB在linux下完成倒库的更多相关文章

  1. linux下安装uuid库

    1.linux 下安装UUID库 1.1)ubuntu下安装uuid链接库 sudo apt-get install uuid-dev 1.2)CentOS yum install libuuid-d ...

  2. linux下so动态库一些不为人知的秘密(转)

    linux 下有动态库和静态库,动态库以.so为扩展名,静态库以.a为扩展名.二者都使用广泛.本文主要讲动态库方面知识.基本上每一个linux 程序都至少会有一个动态库,查看某个程序使用了那些动态库, ...

  3. linux下so动态库一些不为人知的秘密

    linux 下有动态库和静态库,动态库以.so为扩展名,静态库以.a为扩展名.二者都使用广泛.本文主要讲动态库方面知识.    基本上每一个linux 程序都至少会有一个动态库,查看某个程序使用了那些 ...

  4. linux下so动态库一些不为人知的秘密(中二)

    继续上一篇< linux下so动态库一些不为人知的秘密(中) >介绍so搜索路径,还有一个类似于-path,叫LD_RUN_PATH环境变量, 它也是把路径编译进可执行文件内,不同的是它只 ...

  5. linux下so动态库一些不为人知的秘密(中)

    上一篇(linux下so动态库一些不为人知的秘密(上))介绍了linux下so一些依赖问题,本篇将介绍linux的so路径搜索问题. 我们知道linux链接so有两种途径:显示和隐式.所谓显示就是程序 ...

  6. linux下so动态库一些不为人知的秘密(上)

    linux 下有动态库和静态库,动态库以.so为扩展名,静态库以.a为扩展名.二者都使用广泛.本文主要讲动态库方面知识.        基本上每一个linux 程序都至少会有一个动态库,查看某个程序使 ...

  7. 如何在Linux下添加函数库

    如何为Linux增加库一. 静态库在Linux下的静态库是以.a为后缀的文件.1. 建静态库h1.c 源文件#include<stdio.h>void hello1(){printf(“t ...

  8. linux下的静态库和动态库

    一.linux下的静态库   静态库中的被调用的函数的代码会在编译时一起被复制到可执行文件中去的!!可执行文件在运行不需要静态库的存在!   二.linux下动态库的构建和使用 1.动态库的构建   ...

  9. linux下的静态库和共享库

    转载&&增加:      我们在编写一个C语言程序的时候,经常会遇到好多重复或常用的部分,如果每次都重新编写固然是可以的,不过那样会大大降低工作效率,并且影响代码的可读性,更不利于后期 ...

随机推荐

  1. Android通过WebService实现图片的上传和下载(一)

    这篇文章将讲解Android如果通过访问WebService接口实现图片的上传和下载,当然这不但需要大家懂得Android还要懂得WebService技术,安卓属于客户端,而webservice则属于 ...

  2. Python 3.3.3 使用requests模拟登录网站

    在模拟登录上,requests确实比python标准库中的相关模块更加简洁. 假设你需要去爬一组页面(targetUrls),而这些页面要登录才能进行访问.那么requests能够提供一种相当简单的语 ...

  3. Android开发基础规范(一)

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52602487 前言:Androi ...

  4. SSH网上商城---邮件发送

    注册网站账号的时候,都需要发送激活邮件,然后让注册的用户点击激活链接方可完成注册,不过话说回来,为什么注册的时候需要发送邮件呢?为什么不注册的时候直接激活呢?一定要收一封激活帐号的邮件?网站这样做的好 ...

  5. spring @Qualifier注解使用

    @Autowired是根据类型进行自动装配的.如果当Spring上下文中存在多个UserDao类型的bean时,就会抛出BeanCreationException异常;如果Spring上下文中不存在U ...

  6. 为什么不要在viewDidLoad方法中设置开始监听键盘通知

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 一个普遍的错误是,程序猿(媛)试图在view controll ...

  7. 使用 symbolicatecrash 解析崩溃堆栈

    一.先引用一位牛人的博贴: xcode解crashlog工具symbolicatecrash的使用 在xocde编译app的时候会同时生成一个以dsym(该app对应的符号表)作为后缀的文件,每个ap ...

  8. Dynamics CRM2015 The plug-in type does not exist in the specified assembly问题的解决方法

    在用插件工具PluginProfiler调试时,报"The plug-in type  xxxx  does not exist in the specified assembly" ...

  9. app如何更换用户头像信息呢?不妨这样做

    对于现在的手机应用而言,要想获得更多的人的使用,就需要给用户更多的自由功能才行,这也是基于用户体验开发软件的核心思想,一切以用户为中心,想用户之所想,做用户之所需.今天我就来谈一谈刚学到的一个关于设置 ...

  10. [ExtJS5学习笔记]第二节 Sencha Cmd 学习笔记 使你的sencha cmd跑起来

    本文地址: http://blog.csdn.net/sushengmiyan/article/details/38313537 本文作者:sushengmiyan ----------------- ...