在线数据导入工具使用
Contents
在线数据导入工具使用#
在线数据导入工具位于java/openmldb-import。支持两种导入方式,insert和bulk load。
insert方式:适用于所有场景的数据导入,目前还在优化中,暂不能使用。
bulk load方式:适用于空表并且导入期间没有读写的场景。有更高的导入效率,但目前只支持本地多csv文件的导入。暂不支持Map-Reduce模式。
1. 导数工具安装#
工具jar包生成:openmldb-import目录中可以使用mvn打包出opemmldb-import.jar。
> cd java/openmldb-import
> mvn package
2. 导数工具使用#
2.1 命令参数#
–help可以展示出所有的配置项,星号表示必填项。
> java -jar openmldb-import.jar --help
Usage: Data Importer [-fhV] [--create_ddl=<createDDL>] --db=<dbName>
[--importer_mode=<mode>]
[--rpc_size_limit=<rpcDataSizeLimit>] --table=<tableName>
-z=<zkCluster> --zk_root_path=<zkRootPath> --files=<files>
[,<files>...] [--files=<files>[,<files>...]]...
insert/bulk load data(csv) to openmldb
--create_ddl=<createDDL>
if force_recreate_table is true, provide the create
table sql
* --db=<dbName> openmldb database
-f, --force_recreate_table
if true, we will drop the table first
* --files=<files>[,<files>...]
sources files, local or hdfs path
-h, --help Show this help message and exit.
--importer_mode=<mode>
mode: Insert, BulkLoad. Case insensitive.
--rpc_read_timeout=<rpcReadTimeout>
rpc read timeout(ms)
--rpc_size_limit=<rpcDataSizeLimit>
should >= 33554432
--rpc_write_timeout=<rpcWriteTimeout>
rpc write timeout(ms)
* --table=<tableName> openmldb table
-V, --version Print version information and exit.
* -z, --zk_cluster=<zkCluster>
zookeeper cluster address of openmldb
* --zk_root_path=<zkRootPath>
zookeeper root path of openmldb
2.2 重要参数配置说明#
重要配置的项目说明:
--db=<dbName>
: 库名。库名可以是不存在的,importer可以帮助创建。--table=<tableName>
: 表名。表名可以是不存在的,importer可以帮助创建。但请注意,如果导入到已存在的表,需要表内数据为空,否则将会极大影响导入效率。--files=<files>[,<files>...]
: 导入源文件。目前源文件只支持csv格式的本地文件,并且csv文件必须有header,文件的列名和表的列名必须一致,顺序可以不一样。--zk_root_path=<zkRootPath>
和--zk_cluster=<zkCluster>
: 集群版OpenMLDB的ZK地址和路径--importer_mode=<mode>
: 导入模式,支持insert和bulkload两种方式。默认配置为bulkload.
3. 大规模的数据导入#
针对大规模的数据导入,我们建议使用bulk load的导入方式,可以快速进行导入操作。--importer_mode=bulkload
但请注意:warning:,导入前,表数据必须为空,导入期间不可以有任何对该表的读写。本文主要介绍OpenMLDB数据导入工具在bulk load方式下的使用方法。
配置调整#
由于目前import只是单机模式,大数据导入可能较大地消耗资源,一些操作会变得很耗时。
如果导入中出现oom,请调大-Xmx。如果出现rpc send失败,调大rpc_write_timeout。如果rpc回复timeout,也适当调大rpc_read_timeout。
错误处理#
只要importer端没有打印输出bulk load succeed
,importer中途退出或者打印输出failed,都可以视为导入失败。
由于导入失败的状态可能很复杂,所以正确的错误处理方式是drop导入失败的表,重建表再进行导入。
删表重建的操作,可以通过配置-f,并–create_ddl提供建表语句,让importer帮忙完成这部分前置工作,然后接着进行新的导入。