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

把网址也给出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. 22 Notification样式设置内部按钮点击事件

    package com.exam1ple.demo1; import android.app.Activity; import android.app.NotificationManager; imp ...

  2. Eclipse编写ExtJS卡死问题 eclise js验证取消

    1. Eclipse编写ExtJS卡死问题 eclise js验证取消 近期项目用到了extjs,发现项目编译的时候特别的卡,浪费很多时间而且保存的时候还要编译,因此打算看下如何取消验证extjs.最 ...

  3. 最近邻查找算法kd-tree

    http://blog.csdn.net/pipisorry/article/details/52186307 )选择特征(坐标轴)的方法  (2)以该特征的哪一个为界 (3)达到什么条件算法结束. ...

  4. Django 实现简单的文件上传

    今天分享一下Django实现的简单的文件上传的小例子. 步骤 创建Django项目,创建Django应用 设计模型 处理urls.py 以及views.py 设计模板,设计表单 运行项目,查看数据库 ...

  5. 17 ContentProvider

    1 Loader 转载器 Android3.0以后出来的 它可以使Activity和Fragment 异步加载数据 变得简单(Loader里封装了AsyncTask) 2 Loader特点: 对每一个 ...

  6. Android开发学习之路--NDK、JNI之初体验

    好久没有更新博客了,最近一直在看一个仿微信项目,然后看源码并自己实现下,相信经过这个项目可以让自己了解一个项目中的代码以及种种需要注意的事项.不知不觉中博客已经快要40w访问量,而且排名也即将突破30 ...

  7. 海量数据处理算法(top K问题)

    举例 有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M.返回频数最高的100个词. 思路 首先把文件分开 针对每个文件hash遍历,统计每个词语的频率 使用堆进 ...

  8. Qt中事件分发源代码剖析

    Qt中事件分发源代码剖析 Qt中事件传递顺序: 在一个应该程序中,会进入一个事件循环,接受系统产生的事件,并且进行分发,这些都是在exec中进行的. 下面举例说明: 1)首先看看下面一段示例代码: i ...

  9. xml特殊字符处理 如&

     写了个request2XML的方法,每当数据中有'<'.'&'符号时,封装的XML就无法解析.发现了XML里的CDATA属性,问题迎刃而解!在XML文档中的所有文本都会被解析器解析 ...

  10. UNIX网络编程——TCP输出,UDP输出

    TCP输出 每一个TCP套接字有一个发送缓冲区,我们可以使用SO_SNDBUF套接字选项来更改该缓冲区的大小.当某个应用进程调用write时,内核从该应用进程的缓冲区中复制所有数据到(或是应用程序的缓 ...