开发者社区> 问答> 正文

Graphframes / Graphx连接组件跳过数字

我正在使用Spark Graphframes库来创建身份解析系统。我已经能够使用spark找到匹配。我的计划是使用图表查找人与人之间的瞬时链接,并为他们分配一个id进行进一步分析等。

我使用了以下数据(来自公共febrl数据库):

顶点数据样本:

given_namesurnamestreet_numberaddress_1address_2suburbpostcodestatedate_of_birthsoc_sec_ididblock
michaelaneumann8stanley streetmiamiwinston hills4223nsw1915111153042180mneu
courtneypainter12pinkerton circuitbega flatsrichlands4560vic1916121440666251cpai
charlesgreen38salkauskas crescentkeladapto4566nsw1948093043651682cgre
vanessaparr905macquoid placebroadbridge manorsouth grafton2135sa1995111992391023vpar
mikaylamalloney37randwick roadavalindhoppers crossing4552vic1986020872076884mmal
blakehowie1cutlack streetbelmont park belt...budgewoi6017vic1925030151805485bhow
blakestonbroadby53traeger streetvalley of springsnorth ward3083qld1912090743085557bbro
edwarddenholm10corin placegold tyneclayfield4221vic1966030671197719eden
charliealderson266hawkesbury crescentdeergarden caravn...cooma4128vic19440908125674810cald
mollyroche59willoughby crescentdonna valleycarrara4825nsw19200712184705811mroc

边缘数据样本:

srcdstmatch
0100001
1177501
1100011
177501
2196561
2100021
296561
3191191
3100031
391191

创建图表:

g = GraphFrame(vertix_data, edge_data)
使用连接组件:

connected = g.connectedComponents(algorithm='graphframes')
这导致:

given_namesurnamestreet_numberaddress_1address_2suburbpostcodestatedate_of_birthsoc_sec_ididblockcomponent
michaelaneumann8stanley streetmiamiwinston hills4223nsw1915111153042180mneu0
courtneypainter12pinkerton circuitbega flatsrichlands4560vic1916121440666251cpai1
charlesgreen38salkauskas crescentkeladapto4566nsw1948093043651682cgre2
vanessaparr905macquoid placebroadbridge manorsouth grafton2135sa1995111992391023vpar3
mikaylamalloney37randwick roadavalindhoppers crossing4552vic1986020872076884mmal4
blakehowie1cutlack streetbelmont park belt...budgewoi6017vic1925030151805485bhow5
blakestonbroadby53traeger streetvalley of springsnorth ward3083qld1912090743085557bbro7
edwarddenholm10corin placegold tyneclayfield4221vic1966030671197719eden9
charliealderson266hawkesbury crescentdeergarden caravn...cooma4128vic19440908125674810cald10
mollyroche59willoughby crescentdonna valleycarrara4825nsw19200712184705811mroc11

组件列并不总是以1为增量增加,但似乎随机跳过数字,我想确保使用此数字增加1的增量为每个人分配一个id。有谁知道为什么Graphframes会这样做?

当我进一步研究这个时,对于我的开发数据帧中的大约20,000行,大约17%的条目中有跳过。在极端情况下,差距可以达到20-30左右,即一行ID为5846,下一行为5868.我担心的是,当我的规模达到数百万和数亿时,ID之间的间隙会变得非常大。可能会产生问题。

TL; DR:为什么Sparks连接组件似乎随机跳过值而不总是递增1?

展开
收起
社区小助手 2018-12-19 17:02:51 2174 0
1 条回答
写回答
取消 提交回答
  • 社区小助手是spark中国社区的管理员,我会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关spark的问题及回答。

    Graphframes文档从不承诺连续的ID - 相反它提供的唯一保证是:

    生成的DataFrame包含所有顶点信息和一个附加列:

    component(LongType):此组件的唯一ID

    在实践中,GraphX实现使用组件中的最小ID(“ 返回包含顶点值的图形,其中包含包含该顶点的连接组件中的最低顶点id ”),而Graphframes 似乎也做同样的事情。

    2019-07-17 23:23:04
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Apache Flink 流式应用中状态的数据结构定义升级 立即下载
4个迭代,从批量交...1573957773.pdf 立即下载
低代码开发师(初级)实战教程 立即下载