Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kallentu/golden-moa
Hadoop MapReduce for calculating profitable, flippable items from trading post data in Guild Wars 2
https://github.com/kallentu/golden-moa
Last synced: about 2 months ago
JSON representation
Hadoop MapReduce for calculating profitable, flippable items from trading post data in Guild Wars 2
- Host: GitHub
- URL: https://github.com/kallentu/golden-moa
- Owner: kallentu
- License: mit
- Created: 2019-03-27T02:07:18.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2021-06-04T01:52:26.000Z (over 3 years ago)
- Last Synced: 2023-08-17T14:32:01.939Z (over 1 year ago)
- Language: Java
- Homepage:
- Size: 31.3 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# GoldenMoa
This Hadoop MapReduce calculates the most profitable items to flip in GW2.
**What GoldenMoa is used for**
- Discovering less-known niches to invest your gold in.
- Getting a good sense of what groups of items are more profitable.
- Finding new items to attempt flipping.
- Comparing your usual item profits with new markets.**What GoldenMoa is _not_ used for**
- Guaranteeing that the generated dataset will earn you profit (the market _will_ change).
- Blinding investing in all listed items in the dataset.## Commands
### GW2SpidyMain
#### Description
Generates a dataset called `allitemsdataset.txt` in folder of `pom.xml` using GW2Spidy API requests and some additional
parsing.#### Usage
```
hadoop jar JAR gw2.GW2SpidyMain [OPTIONS]
```| Name | Default | Description |
| ---------------- | ------------- | --------------------------------------------------------------------------- |
| `--threshold` | 100 | Sets the bucket threshold by copper amount (eg. 100 is 100 copper/1 silver) |### GW2Job
#### Description
Calculates most profitable GW2 items based on bucket threshold and margins. Requires `allitemsdataset.txt`.
#### Usage
```
hadoop jar JAR GW2Job INPUT OUTPUT [OPTIONS]
```| Name | Default | Description |
| ------------------ | ------------- | ------------------------------------------------------------------------- |
| `--minbuycount` | 500 | Sets the minimum buy listings required by each item, ensures item demand. |## How to Run
_Prerequsite(s):_ Installed Hadoop MapReduce, started all services.
1. Create a jar file by running the following in the main folder where `pom.xml` is located.
```
mvn clean install
```
This creates a jar with the relative path `target/golden-moa-1.0.jar`2. Generate our dataset from current trading post data. See section above for command usage.
```
hadoop jar target/golden-moa-1.0.jar gw2.GW2SpidyMain
```
This generates `allitemsdataset.txt`.
3. Create input folder and add dataset.
```
hadoop fs -mkdir -p ~/input/
hadoop fs -put allitemsdataset.txt ~/input/
// We can see the file has been successfully added.
hadoop fs -ls ~/input/
```4. Run MapReduce. See section above for command usage.
```
hadoop jar target/golden-moa-1.0.jar GW2Job ~/input/ ~/output/
```
5. View output of the MapReduce.
```
// Copy output files locally to view
hadoop fs -copyToLocal ~/output/ .
// View top 10, lowest profit items
cat output/part-r-00000 | sort -n -k1 | head -n10
// Clean up
hadoop fs -rm -r ~/output/
```## Example MapReduce Result
Result from `cat output/part-r-00000 | sort -n -k1 | head -n10`. These are lowest profitable items with buy counts over
500 and mapped into 1 silver buckets which are the default values.
```
246 Name: Rampager's Rogue Pants of Divinity Sell Price: 2000 Buy Price: 1300 Sell Count: 746 Buy Count: 859
449 Name: Ruby Platinum Earring Sell Price: 2200 Buy Price: 1200 Sell Count: 467 Buy Count: 571
450 Name: Rampager's Iron Shield of the Geomancer Sell Price: 2600 Buy Price: 1400 Sell Count: 31 Buy Count: 740
552 Name: Mighty Bronze Greatsword Sell Price: 3800 Buy Price: 1300 Sell Count: 303 Buy Count: 553
576 Name: Valkyrie Masquerade Leggings Sell Price: 6000 Buy Price: 1500 Sell Count: 272 Buy Count: 699
601 Name: Berserker's Seer Mantle of Vampirism Sell Price: 3600 Buy Price: 2300 Sell Count: 439 Buy Count: 1354
656 Name: Rampager's Gladiator Helm Sell Price: 1900 Buy Price: 1600 Sell Count: 339 Buy Count: 704
713 Name: Carnelian Silver Amulet Sell Price: 7200 Buy Price: 1700 Sell Count: 430 Buy Count: 732
766 Name: Penetrating Krytan Greatsword of the Night Sell Price: 16300 Buy Price: 1600 Sell Count: 83 Buy Count: 594
985 Name: Rejuvenating Steel Plated Inscription Sell Price: 5100 Buy Price: 2700 Sell Count: 785 Buy Count: 1310
```As an example of custom thresholds and arguments, this is a MapReduce using `--threshold 1000` and `--minbuycount 1000`.
These results are also displayed using `cat output/part-r-00000 | sort -n -k1 | head -n10`, showing the lowest profit
items with buckets of 10 silver and at least 1000 buy listings.```
5439 Name: Hearty Intricate Cotton Insignia Sell Price: 8000 Buy Price: 5000 Sell Count: 143 Buy Count: 1361
9841 Name: Mini Infinirarium Sell Price: 13000 Buy Price: 12000 Sell Count: 525 Buy Count: 1209
13693 Name: Oiled Orichalcum Helmet Casing Sell Price: 18000 Buy Price: 13000 Sell Count: 249 Buy Count: 1607
16680 Name: Mini Captain Magnus Sell Price: 21000 Buy Price: 16000 Sell Count: 559 Buy Count: 1170
17152 Name: Endless Blue Quaggan Tonic Sell Price: 23000 Buy Price: 19000 Sell Count: 528 Buy Count: 2398
17173 Name: Feast of Truffle Steak Dinner Sell Price: 22000 Buy Price: 17000 Sell Count: 602 Buy Count: 1527
24623 Name: Soldier's Benthic Waterbreather of the Afflicted Sell Price: 31000 Buy Price: 29000 Sell Count: 421 Buy Count: 1727
33016 Name: Carbonized Mithrillium Ingot Sell Price: 41000 Buy Price: 36000 Sell Count: 685 Buy Count: 1834
33173 Name: Mini Undead Chicken Sell Price: 41000 Buy Price: 30000 Sell Count: 334 Buy Count: 1677
98019 Name: 20 Slot Gossamer Bag Sell Price: 117000 Buy Price: 100000 Sell Count: 1444 Buy Count: 1431
```