Data Collection

Listening history of users from the year 2005 is stored in HDFS and accounts to over 200 million listens. A listen in HDFS is stored as:

Column Description
artist_mbids A list of MusicBrainz ID(s) of the artist(s) of the track
artist_msid The MessyBrainz ID of the artist of the track
artist_name The name of the artist of the track
listened_at The timestamp at which the listening event happened
recording_mbid The MusicBrainz ID of the track
recording_msid The MessyBrainz ID of track
release_mbid The MusicBrainz ID of the release to which the track belongs
release_msid The MessyBrainz ID of the release to which the track belongs
release_name The name of the release to which the track belongs
tags A list of user defined tags to be associated with this track
track_name The name of the track listened to
user_name The name of the user

The listening history is fed to Spark's inbuilt algorithm for collaborative filtering. Collaborative filtering is commonly used for recommender systems. This technique aims to fill in the missing entries of a user-item association matrix. Instead of using explicit preferences such as rating given by a user to an item, we use implicit feedback (number of times a track has been listened to by a user). The first step is to collect relevant data to be able to preprocess it. The sub steps of data collection are as follows:

Note: Listens from 2005-01 to 2019-12 have been fed to the recommender system. Total listens used to train, validate and test the model = 200,272,949

Next