10 - Java mapreduce kungfu

Možné řešení z minulého cvičení

Teorie

Pro ty, kteří nebyli na přednáškách: - přednáška a (nebo) Java 8 streams na Oracle

Zadání

Stáhněte si z repository základ cvičení 10:

https://gitlab.fel.cvut.cz/B241_B6B36OMO/seminar/-/tree/master/cv10_assignment Cvičení má dvě části:

Část I: - Základ a mírně pokročilé

Struktura:

  • Trader.java - entita pro reprezentaci obchodníka s akciemi
  • Transaction.java - entita pro reprezentaci transakcí
  • TraderHistory.java - komponenta, do které budete implementovat mapreduce funkce
  • TradeHistoryTest.java - testovací třída pro ověření vaší implementace, projděte si jí před začátkem implementace

1. findAllTransactionsIn2011AndSortByValueAsc()

Nalezněte všechny transakce provedené v roce 2011 a setřiďte je podle velikost. Hint: operace filter(), sorted() a collect()

2. getUniqueCitiesSortedAsc()

Vypište unikátní seznam měst.

3. getSingleStringFromUniqueTradersNamesSortByNameAsc()

Vypište řetězec, který vypisuje seznam obchodníků ve formátu “Traders: name1 name2 … ”- např. “Traders: Bob George”, ''. Hint: použijte reduce() operaci

4. isSomeTraderFromCity()

Existuje pro zadané město nějaký obchodník? Hint. operace anyMatch()

5. findSmallestTransactionUsingReduce()

Nalezněte nejmenší transakci. Pro nalezní použijte reduce() operaci

6. getTradersByTown()

Vraťte obchodníky zgrupovné podle města. Hint. operace groupingBy()

7. getTradersCountsByTown()

Vraťte počty obchodníků zgrupovné podle města.

8. partitionTransactionsByTraderIsVegetarian()

Rozdělte transakce na dvě skupiny - první, provedené vegetariány a druhá ostatní. Hint. operace partitionBy()

Část II - Pokročilé

Struktura:

  • MathIsCool.java - třída, do které budete implementovat mapreduce funkce
  • MathIsCoolTest.java - testovací třída pro ověření vaší implementace, projděte si jí před začátkem implementace

1. Fibonaciho posloupnost

Vygenerujte sekvenci <{0, 1},{1, 1},{1, 2},{2, 3},{3, 5},{5, 8}…>. Hint. použijte indukci (iterate())

2. Pythagorovy trojice

Vygenerujte pythagorovy trojice <{3.0, 4.0, 5.0}, {5.0, 12.0, 13.0}, {6.0, 8.0, 10.0}… >. Hint. IntStream.rangeClosed(0, 1000) .boxed() vrací stream Iteger hodnot 0 až 1000.

Design workshop

V prezentaci naleznete rozsáhlejší příklad.

courses/b6b36omo/labs/lab102017.txt · Last modified: 2024/11/29 09:47 by zidekja2