8次发布
0.3.0 | 2022年8月1日 |
---|---|
0.2.0 | 2021年11月29日 |
0.1.5 | 2021年11月6日 |
0.1.3 | 2021年10月13日 |
0.1.0 | 2021年9月19日 |
在算法中排名1708
每月下载量27次
26KB
608 行
IDHash
IDHash可以高效地为数据集创建一个可识别的散列,该散列独立于行排序但依赖于列排序。IDHash的核心目的是快速识别两个数据集是否相同,而无需它们都在同一台机器上,同时也可以检查如果已知修改,一个数据集是否是另一个数据集的修改版本。
IDHash基于UNFv6,关于UNF的详细信息可以在这里找到,主要区别是UNF是列不变的但行相关的,而IDHash是列相关的但行不变的。
方法缺点
重复识别
由于需要行不变性,一个数据集
A B
1 2
1 2
1 2
将产生与相同的散列;
A B
1 2
但不会与相同的散列;
A B
1 2
1 2
在实践中,这种情况相对不太可能,对于机器学习中的数据集的核心目的来说,这并不是一个主要问题。
预处理
每一列都有根据UNF定义的特定预处理。这主要确保在考虑浮点数epsilon的情况下,浮点值和时间戳(目前IDHash不支持)在数据集之间可以一致地表示。
散列生成
每一行被视为一个单字节流,并使用Murmurhash128进行散列。Murmurhash是一个非加密散列函数,为每个单独的值产生一个分布良好的散列。通过求和单个散列原语,可以生成最终数据集的最终散列,不考虑重复项。
检查相等性 + Delta
由于散列行是通过XOR操作组合在一起以产生最终值,因此也可以通过以相同的方式生成行散列来从最终散列中删除行。
数据处理
IDHash在Apache Arrow RecordBatches上运行,并且可以在批处理中零拷贝处理。
依赖关系
~11MB
~199K SLoC