• HomeyLiu
    2019-05-20
    数据均匀分片的核心是 哈希函数的设计。
    如果你数据结构和算法不错的话,我觉得这是一个很简单的问题。
    通过hashFunchiton(key)函数,输入key,输出hash值。

    哈希函数设计的特点:
    1》输入的key一样,得到的hash值肯定一样
    2》输入的key不一样,得到的hash值可能一样,也就是hash冲突。
    这个是评判一个哈希函数的好坏的重要标准。
    冲突概率大的哈希函数肯定会引起严重的数据倾斜。极端的例子,
    所有的key的hash值都一样,都跑到一个桶里面去了。

    所以衡量一个哈希函数的好坏:
    1》冲突要小。(例如用素数,还有模拟10进制,弄个26进制,abc可以编码为 0×26的0次方+1×26+2×26的2次方)
    2》计算要快。常用位运算。
    3》key哪怕很小的变动,输出的hash值差距越大越好。

    有很多很经典的hash算法。

    但是如果key一样hash值肯定一样。
    所有key重复的数据很多的话,哈希函数是解决不了问题的。
    必须对key进行组合,只要 组合后的key的重复的比率 不要
    比 哈希冲突的概率 大太多就行。

    展开
    
     7
  • 朱同学
    2019-05-21
    刚入行时,师傅曾指导我,hash可以做随机,但是不能做key,因为不同平台hash算法可能是不一样的,类似需求推荐使用md5。
    
     3
  • 火星人
    2019-05-20
    老师,请以你专家级的视角,推荐5篇将来可能影响大数据发展趋势的论文吧!

    作者回复: 谢谢你的留言!可以参考我在第22讲里所讲到的论文呀。

    
     3
  • sunsweet
    2019-05-23
    但是比特币交易平台就是实时的,那是怎么实现呢
    
     2
  • 时间是最真的答案
    2019-05-22
    感觉不是做大数据领域的同学,读这个专栏还是比较吃力的。专栏设计知识的很广,提升了大家的认识,但不懂大数据相关技术,没法实践,比如spark不懂如何部署,然后用自己所熟悉的需要去实践
    
     1
  • listen
    2019-05-21
    老师你好,我们是做学生学习情况的,现在要做实时,就是一节课的信息,是一个大json,1-10+M,其中嵌套多个json,由于各个子json的耦合性太强没办法分离,使用kafka的话一条数据太大了,数据是在OSS上,现在是先拉取到hdfs,
    现在是发现3中方法,
    1、java put到hdfs时,mq发送位置信息,sparkstreaming订阅,根据位置拉取
    2、put 到hbase,sparkstreaming 扫描
    3、使用sparkstreaming的textFileStream算子监控路径
    三种方法没种都有很大的缺陷,老师能指点一下吗
    展开
    
    
我们在线,来聊聊吧