我想从一个图中实现一个算法,该图为每个用户返回一个用户列表,其中他与一个度x相连。
图形由一个文件表示,每行包含一对连接的用户(连接在2个方向)。
例如:
davidbowie omid
davidbowie kim
kim torsten
torsten omid
brendan torsten
ziggy davidbowie
mick ziggy
对于1度,必须有以下输出:
torsten brendan kim omid
brendan torsten
ziggy davidbowie mick
mick ziggy
kim davidbowie torsten
omid davidbowie torsten
davidbowie kim omid ziggy
每行包含一个用户和用户列表,用户列表与他连接到1度。
要使用python运行mapreduce函数,只需在以下时间之后将mapper和reducer写入单独的文件:
cat data.csv | python mapper.py | sort -k1,1 | python reducer.py
我是hadoop的新手,我的问题是应该写什么 mapper.py
以及 reducer.py
?
1条答案
按热度按时间5q4ezhmt1#
我不确定你是否会接受一个没有显式使用mapreduce的答案,但我认为我会提供这个,因为它确实确定了二级关系,它非常简单,而且可以扩展。
假设您有一个运行的neo4j数据库,您可以创建以下图形:
... 通过运行此代码:
然后,要获得给定用户的二级连接(例如“omid”),可以运行如下cypher查询:
查询返回:
这个
*2
在cypher中,查询表示远离的关系(即“hops”)的数量,因此如果希望返回更遥远的连接,可以更改此值。