Embulk--异构数据库和文件系统处理神器
时间:2022-06-05
本文章向大家介绍Embulk--异构数据库和文件系统处理神器,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Embulk是一款开源的批处理框架,它主要用于异构数据库,文件存储以及云服务之间的数据传输工具。特色:
- 支持并行和分布式处理大数据集
- 大部分插件支持事务处理
- 支持重跑(需要自身幂等性支持)
Embulk使用Yaml进行配置,主要包括下面几个section:
in:从数据源读取数据数据(基于文件(ftp等)和基于记录(数据库等))
parser:如果数据源是文件,parser解析文件格式(基于文件)
decoder:用来解压缩和加解密数据(基于文件)
out:输出数据到目标数据源
formatter:将数据输出成相应文件格式(基于文件)
encoder:压缩数据或加解密数据(基于数据)
filters:输出后的数据过滤(可选)
exec:执行引擎(可选)
官方网站模板如下:
in:
type: file
path_prefix: ./mydata/csv/
decoders:
- {type: gzip}
parser:
charset: UTF-8
newline: CRLF
type: csv
delimiter: ','
quote: '"'
escape: '"'
null_string: 'NULL'
skip_header_lines: 1
columns:
- {name: id, type: long}
- {name: account, type: long}
- {name: time, type: timestamp, format: '%Y-%m-%d %H:%M:%S'}
- {name: purchase, type: timestamp, format: '%Y%m%d'}
- {name: comment, type: string}
filters:
- type: speedometer
speed_limit: 250000
out:
type: stdout
每个插件的具体的模板可以参考: http://www.embulk.org/plugins/
运行流程
安装:
curl --create-dirs -o ~/.embulk/bin/embulk -L "https://dl.embulk.org/embulk-latest.jar"
chmod +x ~/.embulk/bin/embulk
echo 'export PATH="$HOME/.embulk/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
下载elasticsearch的输出插件,file的插件在安装的时候自带。
embulk gem install embulk-output-elasticsearch
创建一个简单的yml文件:seed.yml
in:
type: file
path_prefix: ./mydata/csv/
out:
type: elasticsearch
index: embulk
index_type: embulk
nodes:
- host: localhost
随后embulk会自动猜测你需要的Yaml文件:
embulk guess ./mydata/seed.yml -o config.yml
如下:
in:
type: file
path_prefix: ./mydata/csv/
decoders:
- {type: gzip}
parser:
charset: UTF-8
newline: CRLF
type: csv
delimiter: ','
quote: '"'
escape: ''
null_string: 'NULL'
skip_header_lines: 1
columns:
- {name: id, type: long}
- {name: account, type: long}
- {name: time, type: timestamp, format: '%Y-%m-%d %H:%M:%S'}
- {name: purchase, type: timestamp, format: '%Y%m%d'}
- {name: comment, type: string}
out:
type: elasticsearch
index: embulk
index_type: embulk
nodes:
- {host: localhost}
你看Embulk帮你补全了大部分,并在默认目录下生成了config.yml 如果你的文件中牵扯到时区的话,可以加上:
parser:
default_timezone: 'Asia/Tokyo'
之后就可以执行yml文件:
embulk run config.yml -c diff.yml
diff.yml记录了上次最新跑过的数据,下一次会自动更新,并不会再运行记录在diff.yml文件里的文件
in: {last_path: mydata/csv/sample_01.csv.gz}
out: {}
Embulk事务的支持
当数据中途因为各种原因断了的时候,Embulk支持重跑,只需要运行时加上resume-state.yml的生成路径
embulk run config.yml -r resume-state.yml
事务失败后,再次运行:
embulk run config.yml -r resume-state.yml
Embulk会根据resume-state.yml记录的状态重跑数据 如果不再需要事务支持,只需要删除即可。
embulk cleanup config.yml -r resume-state.yml
- scala 学习笔记(06) OOP(下)多重继承 及 AOP
- Angular企业级开发(4)-ngResource和REST介绍
- CSS魔法堂:"那不是bug,是你不懂我!" by inline-block
- scala 学习笔记(03) 参数缺省值、不定个数参数、类的属性(Property)、泛型初步
- Cmd Markdown编辑器简明语法手册
- 如何让spring mvc web应用启动时就执行特定处理
- CSS魔法堂:小结一下Box Model与Positioning Scheme
- jboss EAP 6.2+ 通过代码控制JNDI数据源
- jboss CLI 命令行接口学习(适用JBOSS EAP 6.2+)
- WebComponent魔法堂:深究Custom Element 之 面向痛点编程
- 修复bootstrap daterangepicker中的3个问题
- 搭建AngualarJS开发环境
- CSS魔法堂:重拾Border之——更广阔的遐想
- Jboss EAP:native management API学习
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法