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

把网址也给出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. python语言学习

    前段时间要做视频直播需要编写自动模块,就考虑使用python脚本语言,python的好多语法都是很独特的,比如数据类型不需要预定义,缩进的方式等,另外功能也很强大,豆瓣就是用python写的.我写的部 ...

  2. BeanUtils Exception 之 FastHashMap

    这里仅仅是为了记录一件十分奇怪的事情,在使用BeanUtils的过程中,所有的依赖包都添加了, common logging common collections ··· 在为boolean 这种基本 ...

  3. ViewPager 几个状态详解

    ViewPager.SCROLL_STATE_DRAGGING 当用户按下ViewPager视图并且需要滑动第一下时; ViewPager.SCROLL_STATE_SETTLING: 当用户滑动的放 ...

  4. 19 主线程向子线程发送信息(handler)

    package com.fmy.handler; import android.app.Activity; import android.os.Bundle; import android.os.Ha ...

  5. Android 之Toast讲解-android学习之旅(一)

    Toast比较常用,用于显示简短的提醒,比如网络连接断开等. Toast的简单编码实例 findViewById(R.id.button1).setOnClickListener(new OnClic ...

  6. iOS中 自定义cell分割线/分割线偏移 韩俊强的博客

    在项目开发中我们会常常遇到tableView 的cell分割线显示不全,左边会空出一截像素,更有甚者想改变系统的分割线,并且只要上下分割线的一个等等需求,今天重点解决以上需求,仅供参考: 每日更新关注 ...

  7. UNIX网络编程——客户/服务器程序设计示范(八)

        TCP预先创建线程服务器程序,主线程统一accept 最后一个使用线程的服务器程序设计示范是在程序启动阶段创建一个线程池之后只让主线程调用accept并把每个客户连接传递给池中某个可用线程.  ...

  8. UNIX网络编程——关于socket阻塞与非阻塞情况下的recv、send、read、write返回值

    1.阻塞模式与非阻塞模式下recv的返回值各代表什么意思?有没有 区别?(就我目前了解阻塞与非阻塞recv返回值没有区分,都是 <0:出错,=0:连接关闭,>0接收到数据大小,特别:返回 ...

  9. Fetch XML and ConditionExpression operators

    https://msdynamicscrmblog.wordpress.com/2013/05/10/fetch-xml-and-conditionexpression-operators-using ...

  10. Android开发学习之路--UI之简单聊天界面

    学了很多的ui的知识,这里就来实现个聊天的界面,首先来实现个layout的xml,代码如下: <?xml version="1.0" encoding="utf-8 ...