只有安装了 SDF 才能使用该工具,没有安装 SDF 请使用 sa_clean 工具进行数据清理,参考文档:sa_clean 数据清理工具使用说明

如果不确认您的环境是否安装了 SDF,请咨询神策值班同学获取一对一的协助。

概述

数据清理工具既可用于清理神策分析中导入的行为事件数据,也可用于对导入的行为事件数据去重。

该工具 不提供 的功能如下:

  1. 删除指定属性的数据。
  2. 删除某次批量导入的数据。
  3. 删除某个时间段导入的数据。
  4. 将某个事件定义删除。但是元数据管理中可以对事件进行隐藏,管理员可以操作。

数据清理为 不可逆操作,频繁或大量的清理数据将导致碎片过多可能会 影响导入进度,请谨慎操作。
除了 HdfsImporter 导入工具之外,其他导入数据的方式,导入的数据都是会先经过 Kudu,达到一定条件之后,事件数据才会转换到 Hdfs 中存储。

使用方法

请先 ssh 到部署了神策服务的任意一台机器,在 sa_cluster 账户下使用数据清理工具。从 root 切换到 sa_cluster 账户:

su - sa_cluster
CODE
  • 请注意 su 与 sa_cluster 中间的减号。

事件删除

  • 该方法可以清理一个项目指定时间段内所有事件或者指定某些事件名称的事件数据的数据。
  • 该时间段为事件行为的时间,非导入数据的时间段。
  • 该方法会保留事件、事件属性的定义。
  • 单机版:不会释放磁盘。
  • 集群版:不会立即释放磁盘,每天凌晨会例行清理。注意 : 集群版事件删除一般需要消耗大量时间和资源,尽量不要指定过大的时间范围

提交一个事件删除任务

执行命令

sdfadmin event_delete
--method/-m            execute <操作类型> \
--project/-p           default <项目名> \
--begin/-b             2020-12-01 <删除数据的起始日期(包含这一天)> \
--end/-e               2020-12-01 <删除数据的结束日期(包含这一天)> \
[--priority]           LOW <Job的优先级> \
[--events]             'HomePageView,FistPay' <删除的事件名> \  
[--hours]              3,13,21 <删除的小时数或范围> \
[--libs]               python,Android <删除的事件来源> \
[--hdfs_import_names]  HdfsImporter-785,HdfsImporter-786 <删除的HDFSInporter导入批次> \
[--reserved_events]    FollowClick,SpecificRoomView <保留的事件名> \
CODE

参数列表

参数名必须说明格式样式备注
--methodo操作类型execute / show / historyexecute
--begino删除数据的起始日期(包含这一天)yyyy-MM-dd2020-06-17此时间是事件时间
--endo删除数据的结束日期(包含这一天)yyyy-MM-dd2020-06-17此时间是事件时间
--projecto操作对应的项目项目名default
--priority
Job 优先级VERY_LOW / LOW / NORMALLOW默认 VERY_LOW,若想增加执行优先级,可指定为 LOW / NORMAL
--events
指定删除数据的 event,可同时指定多个事件,使用逗号分隔事件名称'gameListView,newHobby,search'由于$符号的转义问题,要删除的事件需要用单引号引起来,如 'gameListView,newHobby,search'
--hours
指定删除数据所属的小时数,使用逗号分隔1,2,5,2315,16,17
--libs
删除的事件来源,多个来源之间使用逗号分隔LIBSpython,java不能指定BatchImpoter或者HDFSImporter,若要删除某一批HDFSImporter导入的数据,可使用下面的参数,目前不支持删除某一批BatchImporter导入的数据
--hdfs_importer_names
删除的 hdfs_importer 导入批次
HdfsImporter-785,HdfsImporter-786
--reserved_events
指定保留的事件名事件名称FollowClick,SpecificRoomView由于$符号的转义问题,要保留的事件需要用单引号引起来,如 'gameListView,newHobby,search'

使用示例

  • 删除项目 httest 2020 年 11 月 14 号的数据
sdfadmin event_delete -m execute -p httest -b 2020-11-04 -e 2020-11-04
CODE
  • 删除项目 httest 2020 年 11 月 14 号用 python SDK 和 java SDK 导入的数据
sdfadmin event_delete -m execute -p httest -b 2020-11-04 -e 2020-11-04 --libs 'python,java'
CODE
  • 删除项目 httest 2020 年 11 月 1 号事件名为 gameListView,newHobby,search 的数据
sdfadmin event_delete -m execute -p httest -b 2020-11-01 -e 2020-11-01 --events 'gameListView,newHobby,search'
CODE
  • 删除项目 httest 2020 年 11 月 1 号小时数为 1,5,7 的数据
sdfadmin event_delete -m execute -p httest -b 2020-11-01 -e 2020-11-01 --hours 1,5,7
CODE

查看事件删除 job 信息

执行命令

sdfadmin event_delete
--method/-m   show <操作类型> \
--job_id      74562 <execute提交job后返回的job ID> \
CODE

参数列表

参数名必须说明格式样式备注
--methodo操作类型execute / show / historyexecute
--job_idoexecute 提交 job 后返回的job ID
74562 该 job ID 对应 sdf_data_loader_job 表中的 ID 

查看事件删除 job 历史

执行命令

sdfadmin event_delete
--method/-m            history <操作类型> \
--project/-p           default <项目名> \
--begin/-b             2020-12-01 <要查看的最早的 Job 的创建时间(包含这一天)> \
--end/-e               2020-12-01 <要查看的最晚的 Job 的创建时间(包含这一天)> 
CODE

参数列表

参数名必须说明格式样式备注
--methodo操作类型


--projecto项目名称


--begino最早的 job 创建时间yyyy-MM-dd

--endo最晚的 job 创建时间yyyy-MM-dd

事件去重

  • 该方法会去重重复导入的数据,目前仅集群私有环境支持此方法

提交一个事件去重任务

执行命令

sdfadmin event_distinct
--method/-m            execute <操作类型> \
--project/-p           default <项目名> \
--begin/-b             2020-12-01 <去重数据的起始日期(包含这一天)> \
--end/-e               2020-12-01 <去重数据的结束日期(包含这一天)> \
[--priority]           LOW <Job的优先级> \
[--events]             'HomePageView,FistPay' <去重的事件名> \
[--skip_properties]    property1, property2 <去重时需要忽略的属性>
CODE

参数列表

参数名必须说明格式样式备注
--methodo操作类型execute / show / historyexecute
--begino去重数据的起始日期(包含这一天)yyyy-MM-dd2020-06-17此时间是事件时间
--endo去重数据的结束日期(包含这一天)yyyy-MM-dd2020-06-17此时间是事件时间
--projecto操作对应的项目名称项目名default
--priority
Job 优先级VERY_LOW/LOW/NORMALLOW默认 VERY_LOW,若想增加执行优先级,可指定为 LOW / NORMAL
--events
指定要去重的 event,多个事件使用逗号分隔事件名称gameListView,newHobby,search

--skip_properties


去重时需要忽略的属性,多个属性之间使用逗号分隔属性名property1, property2

_offset, $kafka_offset,$receive_time这三个属性默认忽略,如果有其他需要忽略的属性,需要用该参数进行指定,如忽略 $lib 属性进行去重:–skip_properties '$lib'

若是去重HDFSImporter导入的数据,需要额外跳过属性 $hdfs_import_batch_name

使用示例

  • 对项目 httest 2020 年 11 月 20 号的数据进行去重
sdfadmin event_distinct -m execute -p httest -b 2020-11-20 -e 2020-11-20
CODE
  • 对项目 httest 2020 年 11 月 20 号的事件 HomePageView,FistPay 进行去重
sdfadmin event_distinct -m execute -p httest -b 2020-11-20 -e 2020-11-20 --events 'HomePageView,FistPay'
CODE
  • 对项目 httest 2020 年 11 月 20 号的事件忽略 $lib 属性进行去重
sdfadmin event_distinct -m execute -p httest -b 2020-11-20 -e 2020-11-20 --skip_properties '$lib'
CODE

查看事件去重 job 信息

执行命令

sdfadmin event_distinct
--method/-m   show <操作类型> \
--job_id      74562 <execute提交job后返回的job ID> 
CODE

参数列表

参数必须说明格式样式备注
--methodo操作类型execute / show / historyexecute
--job_idoexecute 提交 job 后返回的job ID
74562 该 job ID 对应 sdf_data_loader_job 表中的 ID 

查看事件去重 job 历史

执行命令

sdfadmin event_distinct
--method/-m            history <操作类型> \
--project/-p           default <项目名> \
--begin/-b             2020-12-01 <Job 的创建时间(包含这一天)> \
--end/-e               2020-12-01 <Job 的创建时间(包含这一天)> \
CODE

参数列表

参数必须说明格式样式备注
--methodo操作类型


--projecto项目名称


--begino最早的 job 创建时间yyyy-MM-dd

--endo最晚的 job 创建时间yyyy-MM-dd