https://github.com/keith-turner/mixer
Simple prototype for creating derived graphs from social network data using Deriggy and Fluo
https://github.com/keith-turner/mixer
fluo graphs java social-graph social-network-analysis
Last synced: about 1 month ago
JSON representation
Simple prototype for creating derived graphs from social network data using Deriggy and Fluo
- Host: GitHub
- URL: https://github.com/keith-turner/mixer
- Owner: keith-turner
- License: apache-2.0
- Created: 2018-04-11T22:37:58.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-04-12T23:00:50.000Z (over 7 years ago)
- Last Synced: 2024-04-18T02:58:11.863Z (over 1 year ago)
- Topics: fluo, graphs, java, social-graph, social-network-analysis
- Language: Java
- Size: 83 KB
- Stars: 1
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Mixer
Prototype for creating a derived graph by merging nodes from different social networks using
[Deriggy] and [Fluo]. Building this on Fluo has two benefits. First, Fluo enables handling of very large graphs that do not fit on a single machine. Second, Fluo makes it possible to continuously recompute the derived graph as the source data changes. This prototype goes with the [talk](https://youtu.be/oqrjEexMLVE) given at the [Accumulo
Summit](http://accumulosummit.com/) in 2017.## Running Mixer
Mixer is best explained by examples. To get started, Mixer has a shell that supports the following commands :
```
$ ./mixer.sh shell fluo.properties
>help
Commands :follow
unfollow
alias
unalias
lookup
load
setattrs {=}
help
exit|quit
```Inorder to run Mixer, a Fluo instance needs to be running. The following command will start a single machine Fluo development instance. After Fluo starts, a `fluo.properties` file containing connection information is created. Wait for this file to exists before proceeding.
```bash
./mixer.sh mini &> mini.log &
```The following adds edges to multiple social network graphs. For example assume `tw` represents Twitter, then in the Twitter graph `bob1998` follows `bigjoe`.
```bash
$ ./mixer.sh shell fluo.properties < sgraph1.png; xdg-open sgraph1.png
```
The following maps users in different social graphs into the derived graph. For example the Twitter user `bob1998` and the Facebook user `bob98` are mapped to `bob` in the derived graph.
```bash
$ ./mixer.sh shell fluo.properties < sgraph2.png; xdg-open sgraph2.png
```
The visualization does not currently show attributes. The following shows an example of how
attributes will automatically be mapped into the derived graph.```bash
$ ./mixer.sh shell fluo.properties
>lookup joe
joe <- bob followers=1,following=3,rawEdges=1
joe -> alice followers=2,following=0,rawEdges=1
joe -> rob followers=2,following=0,rawEdges=1
>setattrs tw bob1998 loc=TX
>setattrs fb bob98 bday=8/13
>lookup joe
joe <- bob followers=1,following=3,loc=TX,bday=8/13,rawEdges=1
joe -> alice followers=2,following=0,rawEdges=1
joe -> rob followers=2,following=0,rawEdges=1
>lookup alice
alice <- bob followers=1,following=3,loc=TX,bday=8/13,rawEdges=1
alice <- joe followers=1,following=2,rawEdges=1
```There are two interesting things happening here. First, the attributes are mapped from the Twitter and Facebook users for bob into the derived graph. Second, when this happens all of bob's neighbors in the derived graph are updated with the attribute information. The same is
true for the folllowing counts, when these change for a node all of its neighbors are updated
in the query table. The derived graph is computed in Fluo and exported to an Accumulo table for query. Every time an edge, alias, or attribute changes the derived graph is updated.Removing `fluo.properties` causes MiniFluo to stop.
```bash
rm fluo.properties
```[Deriggy]: https://github.com/keith-turner/deriggy
[Fluo]: https://fluo.apache.org