How apache/flink-training works
Apache Flink Training Exercises is a Java/Scala learning repository: learners run streaming jobs over simulated taxi ride and fare events, with exercises and reference solutions covering cleansing, long-ride alerts, hourly tips, and stateful ride/fare enrichment. Shared event schemas and generators supply the jobs; results are emitted by the exercise sinks. The graph emphasizes Java solutions where source evidence is available and retains the documented exercise capabilities. Some implementation details, especially hourly-tips and Scala wiring, are based on the SOURCE INDEX and tree rather than inspected excerpts.
Main entry points: RidesAndFaresSolution.java Ride-fare solution · TaxiRideGenerator.java Ride generator · MissingSolutionException.java Solution guard · TaxiRide.java Ride events
Components 18
Shared data
- Ride generator
common/src/main/java/org/apache/flink/training/exercises/common/sources/TaxiRideGenerator.java - Fare generator
common/src/main/java/org/apache/flink/training/exercises/common/sources/TaxiFareGenerator.java - Ride events
common/src/main/java/org/apache/flink/training/exercises/common/datatypes/TaxiRide.java - Fare events
common/src/main/java/org/apache/flink/training/exercises/common/datatypes/TaxiFare.java - Data generation
common/src/main/java/org/apache/flink/training/exercises/common/utils/DataGenerator.java - Geo utilities
common/src/main/java/org/apache/flink/training/exercises/common/utils/GeoUtils.java - Solution guard
common/src/main/java/org/apache/flink/training/exercises/common/utils/MissingSolutionException.java - Enriched pair
common/src/main/java/org/apache/flink/training/exercises/common/datatypes/RideAndFare.java
Ride cleansing
- Cleansing solution
ride-cleansing/src/solution/java/org/apache/flink/training/solutions/ridecleansing/RideCleansingSolution.java - Cleansing exercise
ride-cleansing/src/main/java/org/apache/flink/training/exercises/ridecleansing/RideCleansingExercise.java
Ride alerts
- Long-ride solution
long-ride-alerts/src/solution/java/org/apache/flink/training/solutions/longrides/LongRidesSolution.java - Long-ride exercise
long-ride-alerts/src/main/java/org/apache/flink/training/exercises/longrides/LongRidesExercise.java
Fare analytics
- Hourly-tips solution
hourly-tips/src/solution/java/org/apache/flink/training/solutions/hourlytips/HourlyTipsSolution.java - Hourly-tips exercise
hourly-tips/src/main/java/org/apache/flink/training/exercises/hourlytips/HourlyTipsExercise.java - Ride-fare solution
rides-and-fares/src/solution/java/org/apache/flink/training/solutions/ridesandfares/RidesAndFaresSolution.java - Ride-fare exercise
rides-and-fares/src/main/java/org/apache/flink/training/exercises/ridesandfares/RidesAndFaresExercise.java
Other components
- Learner
- Printed results
Connections 23
- Learner → Cleansing exercise: runs
README.md - Learner → Long-ride exercise: runs
README.md - Learner → Hourly-tips exercise: runs
README.md - Learner → Ride-fare exercise: runs
README.md - Ride generator → Ride events: emits
common/src/main/java/org/apache/flink/training/exercises/common/sources/TaxiRideGenerator.java - Fare generator → Fare events: emits
common/src/main/java/org/apache/flink/training/exercises/common/sources/TaxiFareGenerator.java - Ride events → Data generation: constructs via
common/src/main/java/org/apache/flink/training/exercises/common/datatypes/TaxiRide.java - Fare events → Data generation: constructs via
common/src/main/java/org/apache/flink/training/exercises/common/datatypes/TaxiFare.java - Ride events → Geo utilities: uses
common/src/main/java/org/apache/flink/training/exercises/common/datatypes/TaxiRide.java - Cleansing exercise → Solution guard: guards solution
ride-cleansing/src/main/java/org/apache/flink/training/exercises/ridecleansing/RideCleansingExercise.java - Long-ride exercise → Solution guard: guards solution
long-ride-alerts/src/main/java/org/apache/flink/training/exercises/longrides/LongRidesExercise.java - Hourly-tips exercise → Solution guard: guards solution
hourly-tips/src/main/java/org/apache/flink/training/exercises/hourlytips/HourlyTipsExercise.java - Ride-fare exercise → Solution guard: guards solution
rides-and-fares/src/main/java/org/apache/flink/training/exercises/ridesandfares/RidesAndFaresExercise.java - Cleansing solution → Ride generator: reads stream
ride-cleansing/src/solution/java/org/apache/flink/training/solutions/ridecleansing/RideCleansingSolution.java - Cleansing solution → Printed results: emits results
ride-cleansing/src/solution/java/org/apache/flink/training/solutions/ridecleansing/RideCleansingSolution.java - Long-ride solution → Ride generator: reads stream
long-ride-alerts/src/solution/java/org/apache/flink/training/solutions/longrides/LongRidesSolution.java - Long-ride solution → Printed results: emits alerts
long-ride-alerts/src/solution/java/org/apache/flink/training/solutions/longrides/LongRidesSolution.java - Hourly-tips solution → Fare generator: reads stream
hourly-tips/src/solution/java/org/apache/flink/training/solutions/hourlytips/HourlyTipsSolution.java - Hourly-tips solution → Printed results: emits summaries
- Ride-fare solution → Ride generator: reads rides
rides-and-fares/src/solution/java/org/apache/flink/training/solutions/ridesandfares/RidesAndFaresSolution.java - Ride-fare solution → Fare generator: reads fares
rides-and-fares/src/solution/java/org/apache/flink/training/solutions/ridesandfares/RidesAndFaresSolution.java - Ride-fare solution → Enriched pair: produces pairs
rides-and-fares/src/solution/java/org/apache/flink/training/solutions/ridesandfares/RidesAndFaresSolution.java - Ride-fare solution → Printed results: emits results
rides-and-fares/src/solution/java/org/apache/flink/training/solutions/ridesandfares/RidesAndFaresSolution.java