YDB1.1.8.10发布,提供按照key的批量更新覆盖功能

YDB1.1.8.10发布,提供按照key的批量更新覆盖功能

鉴于传统行业的数据库有update更新功能,假设原生数据总量是30亿,每天更新1千万.

之前由于YDB不支持update更新功能,针对这种有少量更新(1千万)需求的场景,只好做全量(30亿)全表覆盖,在效率上非常的不划算.

针对上述情况,从本版本开始,YDB支持按照key 进行覆盖更新.

具体使用方法是在原有的ydbimport.sh的基础上,新增-k参数,用于指定需要更新的key,请参考下面的红色部分.

 

第三:向ydb中导入数据
--
直接追加数据
./bin/ydbimport.sh -t ydb_example_shu -p 3000w -tp txt  -f /data/example/ydb -sp , -fl phonenum,usernick,ydb_sex,ydb_province,ydb_grade,ydb_day,amtdouble,amtlong,content

--按照cond给的条件进行删除
./bin/ydbimport.sh -cond "ydb_sex='
' and ydb_blood='A'" -t ydb_example_shu -p 3000w -tp txt  -f /data/example/ydb -sp , -fl phonenum,usernick,ydb_sex,ydb_province,ydb_grade,ydb_day,amtdouble,amtlong,content

--覆盖数据
./bin/ydbimport.sh -overwrite -t ydb_example_shu -p 3000w -tp txt  -f /data/example/ydb -sp , -fl phonenum,usernick,ydb_sex,ydb_province,ydb_grade,ydb_day,amtdouble,amtlong,content

--按照key进行覆盖更新
./bin/ydbimport.sh
 -k amtdouble  -t ydb_example_shu -p 3000w -tp txt  -f /data/example/ydb -sp , -fl phonenum,content,ydb_sex,ydb_province,ydb_grade,ydb_day,amtdouble
./bin/ydbimport.sh
 -k amtlong  -t ydb_example_shu -p 3000w -tp txt  -f /data/example/ydb -sp , -fl phonenum,content,ydb_sex,ydb_province,ydb_grade,ydb_day,amtdouble,amtlong
./bin/ydbimport.sh
 -k usernick  -t ydb_example_shu -p 3000w -tp txt  -f /data/example/ydb -sp , -fl phonenum,usernick,ydb_sex,ydb_province,ydb_grade,ydb_day,amtdouble

参数说明
-t -table    Ydb
中的表名
-p -partion    (
可选)YDB中的分区名,如果不写,则导入到YDB的默认分区
-local    (
可选)表示数据是存储在本地,而非默认存储在HDFS
-tp -type   
文件类型  目前支持 txt json
-f -file   
文件路径
-fl -fields     (txt
格式必选)txt文件对应的YDB列的名字
-sp  -split     (txt
格式必选)txt文件对应分隔符,支持正则,不可见字符,可以通过urlencode编码
-ov  -overwrite    (
可选)导入前是否清空当前分区的数据
-updatekey -k (可选)按照该字段进行update覆盖,只支持不分词的索引列
-cond  -condition    (
可选)在追加数据前,先根据条件删除旧的数据