Realtime parking spot recommender system and crowd-sourcing platform
======================================
Demo - www.EasyPark.xyz
EasyPark is a real time parking spot recommender, which ingests real-time parking sensor data and recommends nearby parking spot to the user based on the availability for San Francisco City. The interface also provides historical analytics to visualize the parking trends on a daily and hourly basis.
EasyPark ingests real-time parking sensor data every 2 seconds, which are processed in the real-time and batch component for real-time parking spot recommendation along with historical hourly and daily parking trend analysis
JSON message fields:
JSON messages were consumed from firebase and put into Kafka queue using the kafka-python package from https://github.com/mumrah/kafka-python.git. Messages were published to a single topic with Spark Streaming and HDFS acting as consumers.
Two batch processes were performed for historical batch views:
Analyze parking trends on a hourly granularity
Batch processing is done on data stored in HDFS and the Batch views were directly written into cassandra with the spark-cassandra connector
Messages streamed into Spark Streaming with the spark-kafka connector.
Real-time views were directly written into Elasticsearch in a Map-Reduce fashion.
Depending on the user’s location, the parking availability information is constantly updated from Spark Streaming process and utilizing Elasticsearch’s geo-spatial query functionality.
Tables:
CREATE TABLE hourly_location_aggregate (event_time timestamp, spot_name text, availability int, PRIMARY KEY ( (event_time, spot_name) ) );
CREATE TABLE daily_location_aggregate (event_time timestamp, spot_name text, availability int, lat int, lon int PRIMARY KEY ( (event_time, spot_name) ) );
"properties": {
"location": {
"type": "geo_point",
"lat_lon": true,
"geohash": true
}
}
}
```
Data in JSON format can be displayed in the browser by calling the following endpoints