In [16]:
from pyspark.sql.functions import col, avg
from pyspark.ml.recommendation import ALS
from pyspark.ml.feature import StringIndexer

In [17]:
reviews_df = spark.read.json('../data/reviews')

In [18]:
train_df, test_df = reviews_df.randomSplit(
    weights=[0.75, 0.25]
)

In [19]:
print(train_df.count())
print(test_df.count())


1931928
645370

In [20]:
from pyspark.ml.recommendation import ALS

In [21]:
train_df.agg(avg(col('stars'))).first()[0]


Out[21]:
3.700451569623713

In [22]:
user_groups = train_df.groupBy('user_id')

In [23]:
[(row['user_id'], row['avg(stars)']) for row in user_groups.avg('stars').collect()]


Out[23]:
[('2XDTpvVKW2aJwlyyNWwGsg', 3.6666666666666665),
 ('EaBKe-8LB-NHuH7Us-QhGw', 3.8378378378378377),
 ('fDAZoT0PRyd0K9TKerBxsQ', 2.0),
 ('zWWcik1fRPZviBCQLC26FQ', 3.211340206185567),
 ('eeVuxeWBuokW26A4S68C3Q', 2.6666666666666665),
 ('Z1ujtbw8Edcrgcr6ebSyOA', 2.6666666666666665),
 ('BGzavA_ddMr-jGmhArv7fg', 3.6008771929824563),
 ('60_lsQJ8JEGfZeXcTgKn8Q', 4.0476190476190474),
 ('NkENycDoq8acyrJl4jNwfA', 4.666666666666667),
 ('ZjaNE5PtYk8j2K1kOpr2Ig', 3.2580645161290325),
 ('iZwoTW2DoMRNtpAYqChIFg', 3.1666666666666665),
 ('HrZbzPHFCoeS1gbsnkAqHQ', 4.0),
 ('D2ljL5ejuqpa4f8fnZ1qjw', 3.7739726027397262),
 ('-mTmwfY9K9zcPnVmTltH3w', 4.5),
 ('zHJ2b0q5eucGugUWPnQYoQ', 5.0),
 ('iy8snpt14cWUXvcX-5xNXg', 4.0),
 ('4tF9R_a5je3fPwan8PIaPQ', 4.5),
 ('WdP5vTFdRmHKEkbGHFoO0g', 1.0),
 ('t89f0VSfCqYF8QM8UfFHEQ', 4.0),
 ('fIwRq2ebG_Ve1NTwfMVU7g', 3.0),
 ('W584cDDHqw_PYd5_l3F-nA', 5.0),
 ('KuGQIxKfGiHLNRuWLuPpXA', 3.806451612903226),
 ('-hnBzgVoRoqLrGVSxO0ilg', 3.260869565217391),
 ('A8WnomchAmsRTXnGo47lpw', 4.5),
 ('cw98vAuzuA-bPwpcjUC2kw', 4.0),
 ('tg1Eh5J9iqH5Y0ycb1bejw', 3.482142857142857),
 ('hgzoTUz2XJlpZsh69kNceQ', 3.0),
 ('R8u2_-ElvpPHxgEg3XZ8OQ', 4.0),
 ('KvAqvpuQ8HpwQMoJ1fHghw', 3.5),
 ('3DwWwdLEty3JcsIz6MSeGQ', 4.333333333333333),
 ('mIOZQ379FL_qhcigo7776Q', 3.6363636363636362),
 ('IbBym_4jXzTwhUQ4oxE47w', 3.9),
 ('FuSn5ZxN2NV_PpK03gwcsg', 3.4761904761904763),
 ('CIrH6Ln0hCTnZjaIQYZY5Q', 4.5),
 ('lxQv93VhDjS52rJ1DQDBDQ', 3.5555555555555554),
 ('AKiV4pKWkyq532lQnh-M4Q', 5.0),
 ('jC_pYRP1M2LmimVd8zZB7w', 3.6666666666666665),
 ('vVUUSCPohkiqn8Fx5b0pTw', 4.0),
 ('CzkWUMIYDxUSetfCRvYG5g', 4.375),
 ('Q24l4MEURgQmyaBs_Tlslw', 3.0),
 ('_tWsCv3Hh0MZcy1qSv-Xog', 4.074074074074074),
 ('aHiQYaTXrmQTeG6106l5wg', 3.6153846153846154),
 ('pSJeKLt0sfkJqqqFdGtpsg', 4.428571428571429),
 ('P_wAjy3nXyh5rLipL9j6sQ', 5.0),
 ('emDgJKaMaOARJMYW-sBkIA', 4.0),
 ('k7OYIWu_SDAsmddl_nWHpQ', 1.0),
 ('9m7RsJz6gg9a1jFpEP7JfQ', 2.0),
 ('67C1TB6K93CnRTC1U2L3uQ', 4.0),
 ('aZ2DKwGjjTfrGn4AOSI34w', 3.2777777777777777),
 ('2SkR2uQns3bm3g-lDOWIhw', 4.0),
 ('s8MiJBFrUlFK5gnh8sei9g', 2.9047619047619047),
 ('zdS_htOVIskdIyCO9U-20w', 4.0),
 ('chyyyctm9ckd7q2mtMZ7Ag', 4.411764705882353),
 ('wzw1iD40GSFoIZntz6k_Rg', 3.526315789473684),
 ('jfAj5ildPaOKmf8I7PvokQ', 5.0),
 ('AXUI4yHHkcUSXKeb89VgaQ', 3.0),
 ('7a6y67Jg8AO8ArVo3CHV9Q', 5.0),
 ('I3ryn4tf6L9YbuZ8ZC4IoQ', 3.782608695652174),
 ('AdThsUyhnIqWR74cCz82zg', 4.5),
 ('dADaXQyALLnwUyWP6Tjdog', 4.666666666666667),
 ('hGm_xuka1I6_Jp_VZCOixg', 1.75),
 ('VKxVM2ITo6pdzxDxaeBKww', 4.714285714285714),
 ('tMmGMiagt8gBYSu5lmqeCw', 3.1538461538461537),
 ('jx9srgNjR8TakJqoWnMXcw', 3.5),
 ('VTfQfSCiofTkx5tOv_EWpA', 4.0),
 ('rs3pq6wRmaSIADCInQXp9g', 4.217391304347826),
 ('N8l3tJnxyaNGAJC_JqVX5w', 2.0),
 ('GyVQmBDD63ARsr6op0_Rig', 4.666666666666667),
 ('znNp7ysWoiUfZ7PpQu0yuQ', 1.0),
 ('IpEBJtEXwFeyg_53SMoR1Q', 4.0),
 ('jWR2RiSlFiBB5RVKKmjmJg', 4.0),
 ('rXSTTSDOhcjLrv16kWsM2w', 4.46875),
 ('Wjdv1d4sK-VzSC0CdORBWw', 4.0),
 ('14fOvgK8-Q4rj9AYdXVQdg', 4.0),
 ('ugW-qIugMJnt2ptHruWs3A', 3.25),
 ('kFFhw53ZEPoDo6okPU4eRg', 2.6818181818181817),
 ('4PAsp0oWi22zfSz6ld6rHQ', 5.0),
 ('L3IOpl6SO5nVkQOiT1-_hg', 4.238095238095238),
 ('Rrj_TMC2pERnYW8-QNthAw', 4.0),
 ('wXVaAnAPWpv-uquVMOh0-w', 5.0),
 ('LJXCJNsmSKUXK8VF-6yr0g', 3.2),
 ('2KlKG09l3m150EzhET2tZw', 5.0),
 ('rqULwhOLlZjJ0HYIf_GThw', 4.5),
 ('955NJMJNeAFLd1pOdV5hEA', 5.0),
 ('rLt0vCpxZs7QAvB2BJFmaA', 4.0),
 ('OJEe-_8YdU71GkbuGt0CDg', 3.25),
 ('Ct6iAROQzD-a1K4vMzsJXg', 3.2),
 ('7gSwABACGPVrRvWlO5ORGA', 3.6666666666666665),
 ('XAja3Ed6Fa_lwZl_7tb9aw', 3.72),
 ('xHrINmhR2wyxStPBG5eqgw', 4.0),
 ('IXjMoc5YpYX_MnYit5ItGw', 4.0),
 ('WDRb3LyKDNwou1w7N-vGUw', 3.25),
 ('eEEpHwJxTdkmeNO8kVws2Q', 5.0),
 ('wc79RHhGnm8gJnpVj6tA4g', 4.8),
 ('3iXddQztzXtJY9Fvf60Jyw', 3.357142857142857),
 ('gmEFwB63iZ4YwBig26Vbbw', 2.5),
 ('WlBQRynXJi8tbrnNh5V84g', 3.357142857142857),
 ('2nmA1nvnVxYN6JmeZwav_Q', 4.666666666666667),
 ('2QCW0fm-mDleaL8KN7DekA', 3.6666666666666665),
 ('NXuzCE-B76JcJUxpCpyQmw', 4.0),
 ('tgXIsqil9g4R7cGOjVqI1g', 5.0),
 ('kfSz_EZ33M5FAA8-CqpyLw', 1.0),
 ('FyQrUamokaPLDrBxGmzPnA', 3.2333333333333334),
 ('qV2wmfhc2eAN6sKOG9p99w', 4.0),
 ('wYyC1E2mSvAgUxqg68KD2g', 1.0),
 ('6I1KT1SCGbAaTzTIMqF_eQ', 3.5),
 ('jO44Apni7iJZVVK4HQ60tA', 3.5),
 ('yUPUGY9plMaR7JEQVbY0hg', 4.666666666666667),
 ('gzQpXMHIXOk2bKH4YmCapA', 3.8333333333333335),
 ('MP3KsGP9Fhzap-SHSyHE6Q', 3.0),
 ('rDcBeeOHkCg_GlMys-cePw', 1.0),
 ('W6_-lLkSpigfxpjmjz8uvQ', 5.0),
 ('HMFAz4K5ZeMXcAhbEmMS-Q', 3.75),
 ('A3Rahgq3ufx81IjbEfAbGg', 3.473684210526316),
 ('sZapTgsCbXUMAKzB_rmHXg', 1.0),
 ('Pi8XSodePnfS1PSvgsZuww', 3.6666666666666665),
 ('ICq9zgSe4etRlHsbfqQfTg', 4.0),
 ('MG43KuvGUP600CkYGponTg', 4.0),
 ('oQwFLohuwcJYMd0WhCph-Q', 3.8333333333333335),
 ('z6gjzFENiQf-K3lPyV79VA', 4.428571428571429),
 ('XGnFtKHg92Y763bchY-Ifg', 3.25),
 ('nPODAdQ8Ct0Sn-2iPHGqpQ', 3.3333333333333335),
 ('kAxgIZA-kSCKDy6EPg1Eow', 4.333333333333333),
 ('L_goR_KzuK7JWqM2Soob3g', 2.0),
 ('Wcm6Jdsgp7Cz-IqdbY2ZrA', 3.5294117647058822),
 ('nELTGGboc_biCOuA3ZoeAw', 5.0),
 ('R0KVWeN9xR-F6j4z5k9wXQ', 3.6363636363636362),
 ('80K2WomtvdMlICk3lt0Yeg', 3.966666666666667),
 ('CkNvaGIMjPRAjQFFiYtbxg', 4.666666666666667),
 ('E65KNtDwqZAhvSmxNWPbMQ', 4.5),
 ('tKNdZoL76N-OFdmQVz1MIQ', 3.7142857142857144),
 ('yKJCutp4v5K7FZDe6HLMbw', 5.0),
 ('s90iYcEM9tU5fcyy9Tmfyg', 5.0),
 ('midS4e50ZmuOeGyNm3aoUg', 4.027027027027027),
 ('RxMTpj9l3WcN0X6LyggZPA', 4.8),
 ('SGBz3fRvzqYU3L2DUou23Q', 5.0),
 ('iQEb2vPjGLZH4Yk687mIHA', 3.742857142857143),
 ('gOYgSEbE-Z7cqGsgGW3LBg', 3.8823529411764706),
 ('-lGAiGS-yoHf_chqrooVGw', 1.0),
 ('PhzWjKSc6ntvF1i-3OYRpg', 3.0),
 ('SB6gMH-rywdK4uRoALYoUg', 3.625),
 ('yMdORs_0xY_EmOLDueAjyg', 5.0),
 ('qunDpa8uqjBgys3AwTeaQA', 3.0),
 ('HJIaRw_DVI8iPuj4F_rSJg', 3.2580645161290325),
 ('lmM7OAC-ZRGJJu_ICXplfg', 3.4411764705882355),
 ('owS1ezUirTkhxcRt863J-w', 2.75),
 ('__coGeYC9iki1e9MVyOvew', 2.8904109589041096),
 ('bAWt3LDmod9lDnGLij72aA', 1.0),
 ('j78OeM6cLZ3OsFlJwwOgpA', 3.75),
 ('1oBWrKCDvH221hueHla2Rg', 3.75),
 ('HANZjYn3Q8OqqIcyQx0BLA', 5.0),
 ('oKWVVqPWVzq5s6nS4O8sEA', 4.043478260869565),
 ('_CGMFoyhJ52K9kxCvbfxzA', 3.0),
 ('01HpNrCSLNWbQG9Fv3c4Pw', 3.9166666666666665),
 ('SD7HTkGYYMZB7FBu6UkRvQ', 4.0),
 ('96l8E5UgG-n0A4tGUECSiw', 3.6666666666666665),
 ('HlU-aUCVVaSFVjiO3VSZ2g', 4.0),
 ('HtNsJWqOCNiSknD1cqj5GQ', 3.0),
 ('enlAqwh7nHfMC97F9YehNg', 3.625),
 ('iuvGguPTSW2p42f1TowNwg', 3.0),
 ('qcfReXd_qCq4H-6WQw-R3w', 3.0),
 ('aadHOtGp9K4T7IQK_swhjA', 4.25),
 ('yBBWpwEaRoBeTrb2Zj6SLg', 3.0),
 ('zmARcxsPqv2WrQ4RhO_zww', 4.0),
 ('AE0Ois3OTR9IXzWPYD_1iA', 2.3333333333333335),
 ('ZJt78O7kiKrpIu4RpxI18Q', 4.5),
 ('G40t6Sm4VtjKDF6Q9CCQkQ', 4.857142857142857),
 ('Mo3DqfSrDa3jAYkZYEABLw', 3.0),
 ('3a6CyVn5OcSfifdvbw-P7g', 1.0),
 ('cJEbTP-MLVA5Y489pCp4pQ', 3.4583333333333335),
 ('PPYZQDoyQ4Wfg6oL80MVFQ', 3.6842105263157894),
 ('bKna63JiYuqa76t5eahPMw', 5.0),
 ('7oJ1B0JLFZ5K4NB4znHsKA', 3.3333333333333335),
 ('eBWDX4a5iURWg-MA97hFpg', 3.71875),
 ('soG9o5PqmXilKJHpAB777A', 2.5714285714285716),
 ('EnkN58MPWLAydD1Q8d1LZQ', 4.4),
 ('PEIzRB85I_N8KY9WAHORog', 5.0),
 ('TqzzOCr8wYZQkKU5UD5kjg', 5.0),
 ('LMl9Z43ZVPh5wrz4LeYd6Q', 3.5517241379310347),
 ('O9Dbdo2LZut3e8VqIY9gtg', 3.515151515151515),
 ('gG9pGGqlb5RdEZpTpN6VoA', 3.0),
 ('QgfzT80gODJj4863Gs_kbw', 3.0),
 ('t2JFyyrodETCp2sRNPikmQ', 5.0),
 ('2l5ERVeJkJAj5RUh3iwzmw', 2.857142857142857),
 ('t8eHE-UF5yjujL0wT42o1w', 1.0),
 ('3pQxT_d2seD4p7hTLZ0uSQ', 4.0),
 ('-7JSlmBJKUQwREG_yGuduQ', 5.0),
 ('b15R48H3Zt82YHH6apuF7A', 3.5),
 ('BNuPibT74jf8Kp47bZb7DQ', 4.1),
 ('9mBFC5yp_D3wc5sIeG8smg', 3.933333333333333),
 ('ztdPwM5MduPM32G3wNkGqg', 5.0),
 ('VISsrhwaFc7wTQNXYwyRWg', 5.0),
 ('-55DgUo52I3zW9RxkZ-EAQ', 4.571428571428571),
 ('Llxjarp8RJgAkjPnFOMt4Q', 5.0),
 ('CY5yCvzJpkgsQUnO-S1Mtw', 4.076923076923077),
 ('NFH6lgwwub14W-sR7m40hA', 3.5),
 ('M7vDDzoPNQDN2FdTcwCq4A', 4.607142857142857),
 ('-GKEFg_92pp0q842clS_Jw', 4.0),
 ('2ICzZcgDT0s0RhXhTp8XoA', 3.0),
 ('hAiso8IQfKW88uWUGDI51g', 3.8181818181818183),
 ('La_fdJ_JRZ1B7qNBP--C6g', 3.8461538461538463),
 ('2681MaDdwj12rySfiQ1kOQ', 3.0),
 ('Yeu3PcQxqQAaqTauq2HoXg', 2.6666666666666665),
 ('fFGs67RhFZEsSPEXT_5wpQ', 4.5),
 ('AInVFtRp4P-y5ZHMbD8yhw', 3.6666666666666665),
 ('EYrVp2S6n7qSQlxXnUI2dA', 5.0),
 ('r8yBPz9jp1-OHpdW1gIBtQ', 5.0),
 ('AbFB0XIQpg9uDWKZzPTbng', 3.727272727272727),
 ('PVVfyLlj11wwa9sjmKQb0g', 3.8181818181818183),
 ('DgZO2UiUoAJQ5pw5vnJhlA', 4.041666666666667),
 ('d28TmFBzazMaWHxV-R9c0A', 3.6),
 ('d-eLOkLvX2JgCwSAyoWzDA', 4.75),
 ('xAcaPEXU3N_mgQMFtuK2Zg', 4.5),
 ('knPN-SwM-6NpQRTBz32-vA', 4.0),
 ('eCMNH1mNWlnHUCYb2jlgiQ', 3.5),
 ('S5uFVdPgEClFnlX1iSTl0A', 3.75),
 ('eNPU7wB1C5-vR9fOR6md1Q', 3.75),
 ('98n8K9brl0Dc8TocyuD1bw', 3.9583333333333335),
 ('pMF-NXnnBtF2QHtm43v85w', 4.0),
 ('jt62LAb-fnB2UCrSkDAGgA', 4.0),
 ('S5MoEIN8RSrbbkBuJIZCCg', 3.0),
 ('om4ihlBHE_6XjIFsuEgSpg', 5.0),
 ('Ania9MCwET-TBzVjVJuJxg', 3.6666666666666665),
 ('yuUqPnoqVSx_2V3FoAbuAA', 5.0),
 ('p46QYCcZvrjgC7pIFdfyKQ', 4.0),
 ('nJXy1Odj7gF8bT76oz1LRw', 4.0),
 ('OrHUDJn6ulcL3DFLJltqzg', 2.0),
 ('ZMTEZN3zGKhj_YkzxwQZUw', 5.0),
 ('gVjZwTV3uv6vv0m7nwVfVg', 5.0),
 ('Wm06i_jsQddrCqsEnrCfRw', 3.7),
 ('CdCUg3pTo0CivKbD8-Ysdg', 3.0),
 ('YPxeVGJ0pwlAAFOGRm-z6g', 4.5),
 ('9kzcadm9FxJBSaWmvHv22g', 3.0),
 ('J_M3LpQfenoXhL8SI9cFjA', 4.5),
 ('u7vVZoVphnKCUDoivjX_ng', 4.0),
 ('x1RMe0CKsp_8D7JW_8AJTg', 3.0),
 ('RfwXtTV9dbd3l-DeHfX4HA', 3.5),
 ('j3i9cNSQ8_Rj-6OQhRCt9w', 4.611111111111111),
 ('8GYzCWWHBWN0N97WsmKeXQ', 1.0),
 ('97vna7ZzHOXGb9111e4NLw', 3.4),
 ('FwpdYIL6Y-DjSnkL3cgt2A', 4.8),
 ('vc_rOPLapOKQ-5N7Ro8Q8w', 4.0),
 ('eKxOcK0FaV7HYzr1Y7Qm-w', 2.9166666666666665),
 ('0-UxxxWLz1muOzPx2F3-kQ', 3.111111111111111),
 ('b9YtCrRpxg0mM2Mr3lFMJg', 5.0),
 ('PM6wzoHbBwAZU2gRRcxyNQ', 5.0),
 ('Cv5qdXgo_NXRxF2-JIkpBw', 4.0),
 ('yrusy5lmzZ6B6d9VNx6T_A', 4.0),
 ('EhEz34GJVhTW7ZWWPejH5g', 3.5),
 ('9QpuHleuFAVlNo4lr0cvSg', 3.1538461538461537),
 ('bW22JWeWkJz9EZh6reAd3Q', 3.5),
 ('tFFHAdM_lgA6uSXduqVOjQ', 3.0),
 ('2Fvbxp9SSBj0jGl0Wpsyug', 3.909090909090909),
 ('9s2FtsFsSwrWI4I6YQtXug', 4.5),
 ('sxxL6TjvDolUE7GeWBRZrg', 4.5),
 ('bOq4guZajZee1bn_SVtHtA', 3.6153846153846154),
 ('py2MLNWkVgmoFrDyIuDxTw', 2.6666666666666665),
 ('SNsjvOdiw8L82XpC24lrow', 4.0),
 ('4ZfcCa4m5RWvO4EFzfYm1A', 3.4347826086956523),
 ('uxRo8UBViaRDynzKVIXWCQ', 3.4),
 ('JQtbpbrZjxPZC8j5MgMGzQ', 4.0),
 ('LGUwYfAwe3Z0OOKN_SDN9g', 2.25),
 ('P8WNbVV_iDGkKfBKl0zHmQ', 3.125),
 ('-4Anvj46CWf57KWI9UQDLg', 3.0),
 ('gR1whPDiBcdLeaopBnXHeA', 2.8),
 ('D5YwD8rMx3f8gUFDp4JeSA', 3.7115384615384617),
 ('pKVzvdWbA9kqePfbSQ2J1Q', 4.0),
 ('AjC8av7ejY5qQOISG1fD6g', 4.0),
 ('m6RaZK8vbGHFCvO4po2XdQ', 2.2857142857142856),
 ('_ZgaUHBA8lfAIGkaVSSAtg', 1.6666666666666667),
 ('tDaICPheo9_6jdzfeLCUwg', 3.7777777777777777),
 ('OvpQ-yp6i5gPXa2m_Shpjw', 3.3333333333333335),
 ('ORrzDAjxZS6xF-ZdLaB-IA', 5.0),
 ('sIYSICJxD0ro0cmNi5fMqw', 5.0),
 ('rM_xdipcViCdgDPb3uKLwQ', 3.0),
 ('oLvvHzYolS50hH0Ch5vGHA', 4.666666666666667),
 ('dwFOyFvcgHT7PIRd-2r0EQ', 3.0),
 ('VV81rOfReS7AbPHGIG_FEw', 1.0),
 ('ia9WOAZ6eXMbNgr4wvmJ1g', 3.533333333333333),
 ('IjXnO3aSmaw4Rt1hfoVV_g', 3.5454545454545454),
 ('RDhkeTICouW0nXXaxaXMkQ', 3.0),
 ('HBXO10S8-vKkEBTuhdiuDg', 1.6153846153846154),
 ('ZGnxn9YOWAFRxBQZjlri9A', 1.0),
 ('FAkkPZS7E36X8GaxdFEx8A', 1.6666666666666667),
 ('fL1pyN5aDrbINRe-DTrduA', 3.5),
 ('jgX0e7L29ZiUhh-oD72B_g', 3.5),
 ('g34Qcj06LmCDhKzksfVNJA', 4.666666666666667),
 ('lKRXUrIRYTgCjN-ymt99-g', 1.0),
 ('GQkTOj04hW7rbQCrnYo59A', 3.0),
 ('SvAoD-toWGUgBuWeyvl_Og', 3.5625),
 ('buSWCzQMchoDxO4UY8Ur6A', 3.0),
 ('rol0nRX2zR9s_voNLNdJaA', 3.2222222222222223),
 ('kItYaO3kwWmPoFYra1ARtA', 4.4),
 ('K5j99o2s2vFbEbplvGYu4Q', 3.3846153846153846),
 ('v1qWwxwW6yGsB8oXOBYsgQ', 4.571428571428571),
 ('b0c0QX2NtfupU2lyN-154Q', 3.0),
 ('n9DJHwgYflQ_ms8gBU37Wg', 3.5),
 ('IeBrw3WWUze1QG-puV6kaQ', 5.0),
 ('opMt3jOshR0CbZOiK1gQGQ', 5.0),
 ('PLWtGGr4T48HvSd9iOjTKQ', 5.0),
 ('wmz2suJZKpODlHloKzb1Gw', 4.5),
 ('8hZDKPiIZxcN32vhGDKxag', 4.5),
 ('lxOcZ1VZ58nSCFgcunecjw', 3.9),
 ('HslmVF1pBrbeGHHf5AKAUQ', 5.0),
 ('JLdbwSyegM7C5x43CZ6WCg', 5.0),
 ('q1cb99sDlwRVSdbt03cAMw', 5.0),
 ('Ho-AEMY_TW55MInaG8QRPw', 3.8),
 ('QAX9PI0-cAJN6x7rrR1Fbw', 2.0),
 ('L-2BW-6YrUvvfLOUFz1VLQ', 1.0),
 ('LEXejHbsCwPD5UON90q5fw', 5.0),
 ('MGYDV-G-srasp0aHOWKhEA', 5.0),
 ('7PrbZcCHeWtO4Lcfp4Ok5Q', 1.0),
 ('Zi3Op02me52te1nXbOOfgw', 3.6666666666666665),
 ('BxNBl3VrzLBAkwpJ3EUgXg', 2.8333333333333335),
 ('ziOsZacpknqZtc4QFauQRQ', 2.0),
 ('jodq00HbltESTzcpy1cvuw', 4.5),
 ('RvKusEHmXHYcGCCeHF0udw', 4.0),
 ('bD1Ozf99dm2RwpB2Nt_m1A', 5.0),
 ('Lf6YvwErt1qrhHqMHRB0jw', 5.0),
 ('tjtim_GnT6uCNKb5McPxSg', 5.0),
 ('ys8lfhJAOrkR9uExONf_uQ', 5.0),
 ('C16QOoBorPQwN1oeRvhQmQ', 3.5),
 ('Y3qLXW374oI5Fxku12hSbw', 4.666666666666667),
 ('T4tYddq80sMKSHyYDl1CYw', 3.7142857142857144),
 ('OM1hIgL5eji7bleyqIhA3Q', 5.0),
 ('LnzkE5ubITLbKYJF59VB5Q', 3.411764705882353),
 ('J-fY-LbrJPzE4pZeF80u5g', 3.473684210526316),
 ('EQhvDWngsoGtBXW8TZ9saA', 3.4285714285714284),
 ('kgUlckbRyHvMD_78NoXE9w', 4.866666666666666),
 ('O-frog8VhICKAT0grMKiwQ', 3.0),
 ('vMrgHrPV6sidvTMQLyJtXQ', 5.0),
 ('ZQfv1KsMzPAqQGbTJ0fWdA', 3.0),
 ('5jRIlrBqRJIggaadnOhT7w', 4.5),
 ('b3ptYtDbp-nj3bQgmlTHFQ', 4.0),
 ('ERwq_cB4pzp342hoYiFZaA', 4.5),
 ('llsbSKHnzAUPByQwzOybIA', 3.7551020408163267),
 ('nrCnIqXOIypH0X-ziaFOAQ', 1.3333333333333333),
 ('gwQD-thvo4QEzfaMD_nYuQ', 4.5),
 ('pKXL_tHPdaBSpFbktHyD5Q', 3.0),
 ('mT7tBQdGWaF9xtzNFCIXLg', 4.5),
 ('CuXjod_27ExCChF2LCg8GQ', 1.0),
 ('SDpBxIV969RLb96q9tpiuQ', 3.6666666666666665),
 ('httTXmhkKoaqG-24Igcm6g', 4.833333333333333),
 ('3XKa4GsiHPv7MnUn0jZSqQ', 4.25),
 ('ttc3_AtKQzrFlFdfsS0-zg', 3.5714285714285716),
 ('TGo6H2hP6myp1tFgDsbP0g', 3.6666666666666665),
 ('HKkjRr54mqohea5V1eBh2Q', 4.333333333333333),
 ('o2FbUvgG9MJIxYo8SIH7dg', 3.7),
 ('vZwK9jyuOS4zmUbeCnlVNw', 3.0),
 ('zcCEjj_IjSBkLq1UPLizww', 4.625),
 ('jnr7o0AbTkOP1xa01-Y_ig', 4.25),
 ('w8NFFDomI_JFaTYGHzGsSQ', 3.4285714285714284),
 ('fuQxqZ5rHYAjW8k5XWEMTA', 5.0),
 ('exIZyA7e9dukrjPP_X8xEw', 3.6),
 ('K80W_9-nCIvYkhoq-b3D-g', 4.333333333333333),
 ('qBO_9cuGxjsvlGGfUuIz4Q', 4.0),
 ('_g2mH-5oOIdHJ_5Q4NqRog', 1.0),
 ('TkO3UfWZwwfZHMGg_qI3mw', 2.0),
 ('37FUZQAVQNT99CjxX3-hYQ', 3.5),
 ('5HAWxQplIc2mgMQgd-bvqw', 5.0),
 ('Xw5F_nINiSR8tpl4z5T5YA', 4.0),
 ('HQXltM6VH8c1Y35tfMlhTQ', 2.8333333333333335),
 ('SbrDl9B69acb3PEiTCG79g', 3.7142857142857144),
 ('jJ92jhRJbpsgLYv-DlTTbw', 2.0),
 ('pDiPepbuk1jf5KnxoIWfvw', 4.0),
 ('JqrtaUh4hkt3plIUOtA6PA', 2.0),
 ('DLYdsGbx6fJfoIxXS0nQsg', 3.5714285714285716),
 ('H0tfWQsGjEBuhXD4WUtpHw', 3.7096774193548385),
 ('KC_xSxWjWUVEznSX8ObaRw', 3.5),
 ('J9SB47g9nJEoJjiiP_6EUw', 4.111111111111111),
 ('dWsfB2xXBveOLnc2OLFHSw', 5.0),
 ('vkge5uvm7sQiUvJ-QaB3WQ', 4.111111111111111),
 ('dWS7ISk4GIn8Pv_FuHirFw', 4.392857142857143),
 ('zKu7MVzQnJa7dqc0XR40eA', 5.0),
 ('cODORiLFa8kdeAh9zTBdPQ', 3.0),
 ('EhcEl4yFdVAL-9BnYLQVpg', 3.75),
 ('y_pCBbJYTof6_hbR2zA7BA', 5.0),
 ('-9da1xk7zgnnfO1uTVYGkA', 3.526315789473684),
 ('q1c8IsQ-QKqxwEv6fw-gGw', 4.25),
 ('R-gsradh-0niyke-NYUuJw', 3.25),
 ('6eDGsTJi-Q4hqjsFRsYkVg', 4.666666666666667),
 ('2yPRCQMd2u0ka7r5IdITBQ', 3.9285714285714284),
 ('pveLYTBXQh-WjVJMBiWucQ', 4.333333333333333),
 ('H4LTr-24a52WYxT_pjkBig', 5.0),
 ('iY7qj_LPKnsDNrCgdzKS1Q', 3.6666666666666665),
 ('E0rKCurqwmTbZ3M08w-O_A', 4.0),
 ('kVcI-nQsfSQ0ZopeiXzjHA', 2.0),
 ('riGS1XOka4RmIldYE57DQQ', 4.333333333333333),
 ('D3SHJjbB5s5-vEM0SHySVA', 3.6666666666666665),
 ('p0y3sdXfzO_QfhBPhtx_3g', 5.0),
 ('6J0mGxAaPuHAPj8ShjOCag', 3.2941176470588234),
 ('TcBM3LCFnEYZubbD0k7Z8Q', 3.8666666666666667),
 ('BoXAHmwsZOqI3Lb2mZb0-Q', 3.5),
 ('M-OiishkFwb9zvpnhi3jOw', 1.0),
 ('2gS3TEXnA9d_gEcIaHGYDA', 3.0),
 ('EqXQhu2h96hEPKJEpDZaCQ', 4.0),
 ('hOBakMVaLFBoQzrm4_ftGA', 4.666666666666667),
 ('zaq6CLKY0ZiohSRVgadwqA', 3.6666666666666665),
 ('xT7RQksnkdGnDiu9EiPsWw', 3.7777777777777777),
 ('DA9h6cIS3-88ejmOoswmVw', 4.0),
 ('eRaX5PKYV_H9DZYVcX7GPg', 1.3333333333333333),
 ('4E8bpHhysXsNurgTRTlq_Q', 1.0),
 ('LnFIWZM_l__4t8Qxj3pnOg', 4.0),
 ('eWhvsl5vNN0f2c4-kcx8Jg', 4.0),
 ('ilJ8JTwyAMyBpj7LXQDgPQ', 2.0),
 ('LZ8m_JCo2UxgN5rAlbEE7Q', 4.5),
 ('2UlQ4xF8c9OKRH_wyTLiIA', 3.0),
 ('XBxmubKfzh3pkDHry6kskw', 3.4166666666666665),
 ('A4GXu4tNHwcHb1vrd9nW0g', 3.6666666666666665),
 ('H3_ucbHZs_F5BNnWe-dryw', 4.142857142857143),
 ('QZrVgKxdD-FH4cHleS0WYQ', 3.8),
 ('_6HBDrmVN785UnoKe1KfmA', 3.0),
 ('C9ItkhVD6iR0YrYg7-jVtw', 5.0),
 ('qAfHGIKLCAZp8nB0agAmWg', 5.0),
 ('zOgpx8qLBibIIJ5uHxUlgg', 5.0),
 ('8PCS70R9TbVyy_LXEnqk5g', 2.5),
 ('gNJD_wlEBk8cEVu3O6HDWw', 5.0),
 ('0aeJBDgtYd1TXiC09tc15A', 1.0),
 ('6CkttYFeiKbZtVAJq7oHBA', 2.6666666666666665),
 ('3vI0i_k-3i0uKOGaPOyb2Q', 5.0),
 ('V5Xsv_fxxokcSRQZ4u5sdQ', 5.0),
 ('aqJizYMvNspyxeL01r4Hrw', 3.4210526315789473),
 ('XQ_nFlUasT_NYksIHDP-kA', 3.5238095238095237),
 ('KjYB3lTvwiNHqwAOB5XKVw', 4.0),
 ('9eXBxd93gSjW3Hd8dXgE8w', 1.0),
 ('ZTM8QTKgPpbHo_yYe4oFlg', 3.5),
 ('E1mNGJmEWt5vC35wgisy2Q', 4.0),
 ('ENiL4oCOhEN8BPoH_ABlLw', 5.0),
 ('AmmWvIj6Enudd_c6twhprA', 2.5),
 ('TA86D8aHueRu1tIag_lK2Q', 3.375),
 ('kjZtjQkguETdO6etSfTc0g', 2.888888888888889),
 ('EmFaB7UudLiPcBT0ydRo5g', 5.0),
 ('-3i9bhfvrM3F1wsC9XIB8g', 3.857142857142857),
 ('wpjUuGYbwr9kyhJSIHKW2g', 3.6666666666666665),
 ('pmERMI7gfmhnW_S_-BnKYQ', 3.75),
 ('4Bq6ir9yNVZovs0xf1vfIg', 5.0),
 ('O9tK7nUb6ZXGHqI9Js5nYA', 5.0),
 ('sT3_zEgSZeGzrytxmyDADw', 2.0),
 ('JUtIdc2F22ys1aOi86wM0g', 4.333333333333333),
 ('a_TVmbLLYVk91lNlReDP1Q', 3.6),
 ('ixDRZ0wxNDlKSwyM20b3ow', 4.0),
 ('lloWukZA-jX6kojckAMlUQ', 4.0),
 ('mnEO5OBByeGZ5IR8rXbsUQ', 4.0),
 ('9Xec9d55DdOOPw-B6FOcvQ', 5.0),
 ('Id6EbEIHJ-na4s0yx7UXHw', 4.0),
 ('NqjHasG4tnxukvesw4dy0g', 3.6666666666666665),
 ('O-6Drz_aTmcRMJyiXKO7IA', 5.0),
 ('RWB10T9xTL6whXoLBZHanQ', 4.0),
 ('U7MeGRAYfvirqFdqOdjVWA', 5.0),
 ('V7LRNklGj_YAOIU5HSDzUQ', 4.75),
 ('aLa9i_QJm_H3MgkrnB59Pw', 4.285714285714286),
 ('yDzwf1cCtLcEor8Y79z4bA', 5.0),
 ('1u6zz0xpKrIyjL0hljR2_g', 4.0),
 ('3Kta47FbZx_APqByZ2IRkA', 4.666666666666667),
 ('KYNd_nhbb4AMImzGrwGjpA', 3.8),
 ('Y4JCjvQWPUKm55rdBwBnpA', 1.0),
 ('vw50LfKLSa0fFmzgUl5c9A', 2.0),
 ('HUnR9t4WENOx8lszRH_n-Q', 3.9047619047619047),
 ('BHxgi8MKRNdFGb-8kF5y7g', 2.0),
 ('H1J7BBq_rcx9Nl6k9ee42w', 4.0),
 ('VMKZH5gWnmZ3xHEl4yDPwg', 4.0),
 ('v7g8xGYQ3DyDeU-3cmGWcw', 4.5),
 ('BZQe0xNYnGDH3lLvRhGFvQ', 4.428571428571429),
 ('kRYmgr7kDV3qFajF6jcdxw', 2.0),
 ('g97c11cYybj269ZhFJKQ8w', 5.0),
 ('_uvUFlizPI_V4GS7t5u8kg', 4.0),
 ('SyDLGfIQ4GFqwEk41K3HRA', 5.0),
 ('KNqrb4fbFWaqDRdZZmxduQ', 4.5),
 ('s1450pOByJW8KjexugG1_w', 4.333333333333333),
 ('VrNcMg01LNNqWJo2KoklOQ', 4.25),
 ('3Z1K2ezJxLdq5HBTZoI_iw', 3.3333333333333335),
 ('mkCs-Yfq9uPF7nNpV4W9Jg', 4.25),
 ('BFdUn9bY1KfgYCTDvcwvLQ', 4.0),
 ('IAN2pNd3pWCBQvkj6rzmCg', 5.0),
 ('YFwhEgu6mOFkZ_fqRYmzhQ', 2.5),
 ('MNl63nVq_UJtj4RryrAEdQ', 5.0),
 ('-VBZn4i4crMhi-bn-jR_cg', 3.0),
 ('ao7eQKhopKM3gB7nJGioTA', 4.0),
 ('oHFNwZQ8G57TIrdx14-cLw', 4.5),
 ('y9ZhenRSG_CsIjuMlyhuCQ', 4.8),
 ('1Q-tjPYDBaFZJouj8Ynl2g', 4.857142857142857),
 ('OnG5xf6-lZebJyfKj4qVAA', 1.0),
 ('LUvjfBuGZIFNLhJqa_MRbQ', 4.0),
 ('GnEksJFS5tHPY094hVn6Pg', 5.0),
 ('L09TeX50dcT2vCoMlKxNFA', 5.0),
 ('U13E75oU3RwXRnu_1lfw_g', 5.0),
 ('kswHHWKiuq7nKtSOeIOk3A', 4.466666666666667),
 ('iz2DZtQ2ogafRQBMpX-kpw', 2.0),
 ('c-To26mj7SklVDr6JTPwXA', 5.0),
 ('RvUoKzJqQBnw7nKw7LT3_g', 4.75),
 ('JeVupOZlVO-4EIxuBBw_yA', 3.5),
 ('-dErbI4sHSkRz6oxjy9L3g', 3.789473684210526),
 ('ylIrzAqBzN1TLf4-ZNvBcA', 5.0),
 ('Gb9Y_f1xslY1mDvvHBXaLg', 3.372093023255814),
 ('EyzGqnv6-mAaeRBFc6xvtQ', 3.0),
 ('Kog6_iJ3wEumIV4U-wqMTA', 2.0),
 ('EveidIU-Yb_fjAN2pmx7Aw', 3.0),
 ('pr2GTWRrAYzym05EYDEVVQ', 4.0),
 ('8WRSfST4mNrDxni4AaU3iA', 3.888888888888889),
 ('qDyLTnp8EfC3wYLuXH03Dw', 4.2),
 ('xzyJiETXA25Ls5J3JpDp-A', 4.5),
 ('ehTl8VejBkidaXsOwQPG2Q', 4.333333333333333),
 ('uzUi7nAnryHJcZNxMCcoUA', 4.8),
 ('aUkgUZXklBLCGIlHBuMO6g', 5.0),
 ('9WTQULo-NE6-ekOxMY6BBQ', 3.0),
 ('iZRdIbXlbzGtN3qwd4zaqQ', 4.0),
 ('YmVxeVobzQrgzjr7cTKZLA', 1.0),
 ('PxTG5v-gjolwQKviX4gS2g', 4.5),
 ('ydo80FiWVTO2eZBSpaUB0w', 5.0),
 ('Ox99-mEMGzT2c0tS30sDGQ', 3.5),
 ('j80fhAMsFt1hemMNBs3yEA', 3.25),
 ('iL7XaCj2lr8IUMMZTsC5TQ', 3.5),
 ('bVEFLzdMBu63O00sMukolQ', 3.2),
 ('pFOb15aansCqmeMIDsGTjw', 1.0),
 ('gu_1-o6fZTJL-M6rbQf6mQ', 3.6666666666666665),
 ('h4RPNNmFZPwJXQuFe1M9mg', 3.0),
 ('VJw_AQTr8R4ecAiD0hsn0g', 2.0),
 ('66KALehIbbc75nLarDGspA', 3.0),
 ('8Hs0aaMQT1TiwyAZAwm3yA', 4.0),
 ('6FFFFNZLeeHERUs1MatgBg', 4.333333333333333),
 ('D7ZAMJcKhs6mS_Ky-8Sprw', 4.666666666666667),
 ('2NfcRI9UmKOH2Q__TO-ZEg', 3.6666666666666665),
 ('9j6jMQZ6BEJZ0fEFKb8oAA', 5.0),
 ('G-4c_G7iXLbSVuMxa5t0IA', 3.25),
 ('6hLgsQIjCrw0J_afZNADVA', 4.333333333333333),
 ('PD0MvfvLkCUxV6TVpzwGSw', 3.0),
 ('zk5S8XLKQeQJo4nqf-uGRA', 3.272727272727273),
 ('tYE4-Z9rSVSst4GYHN2VQQ', 3.0),
 ('2KNjkDvbdYwEs7xcTO9eQQ', 4.0),
 ('YTo8HUbXmifjIT-hH1JSwA', 5.0),
 ('ZW_vdCnGUkqjogDyk7sKWg', 1.0),
 ('Qtir1B_R9G_9uiINbr_wrw', 3.142857142857143),
 ('zdXJFWeoB0zT0jK2a4jsdA', 2.5),
 ('0obrr0L01fZZlTW3fMnkLw', 3.125),
 ('HZBr6aVDDgd_9rcefVLtmQ', 1.0),
 ('_gF1ODF8yDxsanmuB4isJQ', 2.0),
 ('DgxP_qdE0-OChQjiUGHC3Q', 4.666666666666667),
 ('qVu2NwMPbcOMxa7k7JcC-w', 5.0),
 ('oJcH_BKFGrbYaa_qF2616g', 5.0),
 ('BWx0Ff7Y2rq8mo1EQruJ0Q', 1.0),
 ('L5wNpczkMYCcOgz0CrxJIg', 1.0),
 ('Pm6vYksQ-9_e5miauwAIaw', 5.0),
 ('XqqmYmSIFX_TJZ6A2KOOig', 3.6538461538461537),
 ('1yAa95hjob9E7ii-J0d_CQ', 4.25),
 ('5njNcjI5XZBrw1lbU3Hmsg', 3.75),
 ('REXfsR_7C-k5peomdy9csw', 4.333333333333333),
 ('ZVJvlDWkmxtIsxISJgNuvQ', 4.666666666666667),
 ('bZF26YBz9xLDEljnm8OWmA', 5.0),
 ('LMf8egc-mflU6PUeJ6gBuA', 1.0),
 ('ZAoVz-xsJzB2ScEO0fYNiQ', 2.0),
 ('46wwNRiBGIAJuPlk8TOP_g', 3.923076923076923),
 ('gdBzUGu-dMUBdQfQsntx2g', 5.0),
 ('edEbC4fEPqq2BhbDaFj6Yw', 4.25),
 ('5zXjYEBUqT1QKRgBJltaaQ', 3.0),
 ('1Mo07J-hO_z7Yu-FvjKGeQ', 5.0),
 ('SY41K848TzGOt8noeOt8_g', 2.4615384615384617),
 ('WVxud7Ng3GBTi8RaxabF7Q', 3.2),
 ('jbNIez0TKU5XAku0O6c5qg', 2.5),
 ('LGnqkKdL2qyQpjsN8mmGDw', 3.3333333333333335),
 ('YWejdBL_ou0cDEW3FtKHJA', 3.0),
 ('PRzhBgw3truNA6qa1U43vg', 3.75),
 ('sg8dMmLPQ3KMzRcm8vo2gQ', 1.0),
 ('4psCnnwK-wpKwS2yJSxYPg', 3.8),
 ('HWI-OfJaTvOMX0DDB8Bq0A', 3.5714285714285716),
 ('SxScGOVkxC8-jERtO-nX0A', 2.8333333333333335),
 ('zUPaUdaQuO52Cq_y82w6xw', 5.0),
 ('fJwNK7CZkrvS-aO4B7Kdew', 3.6666666666666665),
 ('uVDJlnPJNx07_jDqI4jgYA', 2.923076923076923),
 ('89WVPgShXMDkcfnBx3A_Eg', 4.0),
 ('eiuqLyHoZvpZMwFAiL8hfw', 5.0),
 ('AUFzna19uSb7amE--e1ETQ', 1.0),
 ('y_XgW02VKRwDKGhHq17yuA', 3.4615384615384617),
 ('JAOFcDoMEeoDw3BN77bcRg', 1.0),
 ('kirvWvB-D6jvtc_80eoZ5w', 4.0),
 ('pDH9v2feEuAQp66laptwDg', 3.0),
 ('pfjA86g0yfK9QW9zZCGL5A', 5.0),
 ('HX75Jo7d3-IRs_1zS19iww', 5.0),
 ('z0C-fQYK5S4aq31HbEbefw', 5.0),
 ('9hh1M-3aDJZVTwwYYy9AnA', 4.2272727272727275),
 ('ArwjAC2m50ctfJZdLV_dZA', 3.5),
 ('LJhpzJBmE5S6KGxLQGMRUA', 4.0),
 ('gOFcE_CxA5KqoywVU_RiYA', 4.0),
 ('axbFJyPrzMSz8R2OmgEjLg', 3.0),
 ('ibuFkg04Hc8MkRy6JRTY6A', 4.190476190476191),
 ('S0b8_tFfOJjfERP4_bPMpQ', 4.2),
 ('VZ0UaYadWHaU7omJLZY4Bg', 5.0),
 ('cfclpku-7qRoI1eUv9QFzg', 5.0),
 ('slLwDsOZ3IC7NAmWlrtGUw', 5.0),
 ('CQzSDWcStjTeP1p_m3L6Ew', 5.0),
 ('QamNEIX5YRAEXoG858roDg', 5.0),
 ('50NGyLtJgNkGpD6f9wkTiw', 3.0),
 ('hU92M5BYJzEmF0pvOsGoUg', 1.0),
 ('B856VSGCvHAB-mil7JVprA', 3.526315789473684),
 ('MF2pzaL-nGhtJ_j6Dhs_2A', 4.0),
 ('cHdSQISeMpp8HlCWgNb1QQ', 3.323529411764706),
 ('SIf5rJUlAa73ZlDCtNWTcw', 4.04),
 ('z70XfS5HCVXTsZuajc00dA', 4.5),
 ('W-RUiwySfPQudDRFLfdaBw', 4.125),
 ('5gtmVj_NfA8GQoMRLSGJFA', 4.0),
 ('SHxuw7urUxpAefvf4b-lDw', 4.0),
 ('CCo5-BJKhIFxGLcOxCoFDg', 3.2),
 ('MmtUyWh6jtxLBVjsYXh2eg', 4.666666666666667),
 ('0F-9cbwt_4qr2ccpbzndLA', 3.0),
 ('AR3Pewo1OJiNDSgBvCmbaw', 2.0),
 ('6mMk9hO_RAbdGMEGeg3oWQ', 3.7222222222222223),
 ('0FUgTydzq45texDcDUCLag', 5.0),
 ('2Mm1w2x5KqNBoV_WvY10dg', 5.0),
 ('nHObhOQ1ssPjZclcUlOUmw', 3.25),
 ('61u3vzrb9XW7UXmGrVAx4Q', 5.0),
 ('lCSNAoj04FBh403R_B75Dg', 1.8),
 ('LEr8vS6PRymCg-SJHR7b_g', 2.5),
 ('dJCQxwbw0GdVf59cuIQzng', 3.6),
 ('j-S8HA2HMZD2yuTMpax-Lw', 4.333333333333333),
 ('BGKO2S8XsjKtjFgO5Kv8kQ', 4.0),
 ('lvzVuPBCjPDgJS8AmBpaDg', 3.4285714285714284),
 ('h4Lx5A52Eib9qgzHrQq5ag', 4.0),
 ('ak2sXowzRc4aLq7mMDyXGg', 2.142857142857143),
 ('t3fpherOTOeSFVHIZ2Jnuw', 3.8333333333333335),
 ('2T4fGWVymlwAZTm_jimG5A', 4.75),
 ('XshE6w2DmJ7F6PBOUwQB6A', 5.0),
 ('hUv2N9Ra2Z7Dq1ThHgnlzA', 3.3333333333333335),
 ('5LLitCvCow3piw6o6WQkLg', 2.7142857142857144),
 ('9BxKiodYBD0n6ZF9jTtAsA', 4.090909090909091),
 ('iyR5YwpMnOCmbfvk4KKczA', 4.0),
 ('WpUaRaSFxFsYN6KTUAUOlA', 3.0555555555555554),
 ('5YXcnjNQ1PsJK0GznDBH9Q', 3.652173913043478),
 ('pIw1kp4u5hedz4JEbHjDrw', 3.6666666666666665),
 ('_fGysU48tncAdUlJHbMwXw', 2.75),
 ('EVNwnf5tgtLo0NiTDmM_hQ', 4.875),
 ('H7_QmS05uaYPOuwqnB1Idw', 4.333333333333333),
 ('dx5C1h-DpV9xsVOqAyWoKA', 3.3333333333333335),
 ('S4rtxwJXeLP4BGi5lakoYA', 3.0),
 ('cHLYIy0c085b-8A5WAQyqQ', 3.0),
 ('VHw5kY6jq4FbYyJaZINUtA', 4.0),
 ('ilj281FeNpG55W8syo4Yeg', 3.0),
 ('FcPizV6LBFNe_Y00EQHh9w', 3.6666666666666665),
 ('n6C9eTN5ijw9DJRDAW7zjA', 1.0),
 ('XjyneOR2t_o12hSt-MncKQ', 3.5454545454545454),
 ('eI90q4K14K1Xpv4KWZmGkA', 5.0),
 ('ZLWELuKB4MnGQG6_KgOjig', 3.0),
 ('Rm2hmvlpnQbDQPoK6XoFQA', 4.0),
 ('0b3FXt-EgiwMvS4scwBKeA', 4.5),
 ('D3S0haD7fHYS2O6cEajGbQ', 5.0),
 ('35E-M84E2dmD4ws2I5RYfA', 3.8333333333333335),
 ('QAteXiFPrLbJiyxHbHgfow', 3.8),
 ('8Y2ZQqfR2dPzciLWwg6F_g', 2.5),
 ('35vuYenuJP_4qsqyNPcu8Q', 2.0),
 ('0AlnetQ_-a4f7kY0Sker2w', 3.3),
 ('NE5ayYtJ_r3MNtHo-1VlpQ', 4.0),
 ('YYImewimgxLFCYPZrV_pHA', 3.0),
 ('1aNHDx4GD9fL1ltPoYUQPA', 2.8),
 ('U4RYluHkaejpkUALuk1_Aw', 3.3333333333333335),
 ('J8Gf-_GuocLye9AIzQybxQ', 3.0),
 ('fm2npkf_1BNUPRZQbvJA0Q', 3.3333333333333335),
 ('sy8XAzG6XIndfcNg9Z1jGA', 3.6666666666666665),
 ('WC7BgfeWy99jVdXF_6Lf0A', 3.5),
 ('xPL5qbKNxzhcyUAs5jwzPA', 2.5),
 ('t7pPGfAFNJIgnoNU8exckQ', 5.0),
 ('DhrpQHpxPGpvJO-Oh0Qlyg', 4.5),
 ('TzJdlQxa2kYjNoBCtLH26g', 4.0),
 ('rt_xL_eVYxBOc-5KtIWCfw', 1.0),
 ('VI0pu9BR7m6PCrAEhP542w', 2.3333333333333335),
 ('IdJaMp4NyZ6sQQiS05UEUQ', 1.0),
 ('7Q5aPLtDrWDhWPlFRkrYWw', 3.6),
 ('lEeQGOPZXTQUs9z8z2G-eg', 5.0),
 ('pD3wce41cb3RumjukXp_1g', 5.0),
 ('PMlhB4fRKR4jvfTL5W7dhA', 4.5),
 ('qCNZXu0nA1m9_qQDSY9bfA', 3.6),
 ('qQiHdR_B9YxaIOcqJ876wA', 4.333333333333333),
 ('QkhtomJ76_O8HnTnEQ8E-w', 4.4),
 ('gWFbfassLbjkd7nfGPCu9A', 3.6666666666666665),
 ('0wZZyqtz4xejWDZlpm900w', 4.0),
 ('xktpMS75aseQTb6BOHeMkQ', 5.0),
 ('gurcmVDESVQ8X20xpw4btw', 3.75),
 ('er3oGeRMf1op9yHEGK-3yQ', 4.166666666666667),
 ('SKeQ9pXREz7dkFS4qWAgdg', 4.090909090909091),
 ('798YPJIqnMmz7qgMw183ew', 5.0),
 ('H65tZ5JC0FhySc5uOwyERQ', 5.0),
 ('IKQXiehRSPsYzoJvqeWnAw', 4.666666666666667),
 ('KC6RQlajTSBY-VrZeme2hA', 3.2666666666666666),
 ('bOlvSUuZOj2uc7JQQlgL6g', 4.0),
 ('d2HskPwyoOyUFwhro3JWQQ', 3.2),
 ('B_4OUzr0q1jpOsgi1Wh9vA', 4.111111111111111),
 ('TB8nT_Dy1Pib3YwCwyxl3g', 5.0),
 ('wUh2gOh6NJkJY2XHjpS2rw', 5.0),
 ('7wGm0gaIG01i7Y-kRGP2TQ', 4.0),
 ('a_olzUPB8gf_MfHGJAw5Fg', 3.0),
 ('fBDNKIGniAeKmMnrpL7byg', 3.0),
 ('p_qC1Jj5jGdZwA8LpyxKEQ', 2.0),
 ('-dV1Z7attfgdpyNpZCtoaw', 4.0),
 ('IxZzwj2iyrylLHLU_vQDhw', 4.0),
 ('RrE2GIhV1q3DjDwZ3yfuhw', 4.0),
 ('UPohpANAGhikEZ4_091HPw', 5.0),
 ('I3SKPhehQ15i04KtERNzIw', 5.0),
 ('BKxQJJAh_0Jtv4MqxbjkMA', 5.0),
 ('7VPWQqw9_tUsuRwV7OImiw', 1.0),
 ('BvZ85YMHrrPK_QvkTX9jEw', 3.0),
 ('unNWv0FkF5Z65qJ0AOhfrA', 3.6666666666666665),
 ('bH32TMCOWTsYtFLZRUzeuw', 1.0),
 ('xY9Y6kN53lcSUySFPajZXg', 4.0),
 ('bUSb_T9tAn_zY2pwg0DVpw', 1.0),
 ('CgtezsA6IDqe5GmpjZNcAg', 5.0),
 ('MWZPj5e6K0etFxMTjF5v6Q', 5.0),
 ('aTfF-9Lbv0rb2uhmh5eMuQ', 5.0),
 ('m3921CB7hzyegyfWMNW_uA', 5.0),
 ('gngidXb0CIwbGZ4vuACJLA', 4.5),
 ('xMCvTyk8xif0AWHz1i0pxg', 3.5),
 ('vk4PEFt12PZQzfmN7alpBQ', 1.5),
 ('6dggBjtUBcmu17W8Mkgsdg', 4.0),
 ('fmww-Gf2LnYfL40eezDDEA', 5.0),
 ('X6q30hy_zjZeLOzJj5KgUQ', 5.0),
 ('0qVDqCMquxuvQRKyUkoADg', 2.0),
 ('-KPZpkZEuKaMYQXHWSTw2g', 5.0),
 ('at6kTMfjaX5mEbIcWHQt2Q', 4.571428571428571),
 ('iWVEkE_ERqCqxULpdJbncQ', 5.0),
 ('C2YRjTezIGFYVO0JZoA-fA', 2.0),
 ('v3xoEvqs0uN0AaJi3lW9ZQ', 2.0),
 ('xNL0O_wB8IM3Wij-uNnTNA', 4.0),
 ('m1IVpXClMox1VGw5hO2LhQ', 4.08),
 ('zXLoogjo7oJCEq7IuHjnaA', 1.0),
 ('ZNWV2etUy2rPU8gCiP0-RA', 3.0),
 ('mu6xEHThck91bAyD38XuZQ', 4.111111111111111),
 ('Y4brP4BAPJVcX4SxXzQEZA', 4.333333333333333),
 ('8WODiZ6jg_kT0GmIbVqjyg', 4.2),
 ('CRodeb83cJiBNnPA6XGe6Q', 4.0),
 ('fETISb3fW1AxxxpNtXdb5w', 5.0),
 ('tCRK65LrfCEC1LzFS8LwvQ', 3.0),
 ('DM54-zx4pZvuVE0JAcqA-w', 3.125),
 ('Nh9XPvC0zXjd-VfPC90F8g', 4.75),
 ('EbRGFK-v6A1_7UFXAdydEg', 3.8),
 ('-dJ6_TOaGy289si_gJ4KTQ', 4.0),
 ('Oo-C0qhDd3Kx5h2zPPVgtA', 4.0),
 ('NuYtBn4ysHFzfVbtDGH1fQ', 5.0),
 ('O6C7BlIIoA-1_0qmet6MVA', 5.0),
 ('2u9kzvBanpQ5JH9CT61TIg', 5.0),
 ('ZUECfVKbOZMWTnbvz9yelw', 2.5),
 ('Mu6wz7_d6OBgRqkl4_NaXw', 3.4285714285714284),
 ('8OuhgVDjoA1qcfTyy2ZIOg', 3.909090909090909),
 ('TQ1ddpjftd7-viE_CV8dqw', 3.176470588235294),
 ('sVt7x4X4nFcr2uTfmZ8GkA', 1.5),
 ('-xuYnB-HwZIQJVzRXnVUPA', 2.0),
 ('EjggdHQ2dBNV9dvh9LEZxA', 5.0),
 ('418W7Ufoz3eXSt3A1wsxOg', 4.75),
 ('TdP3cBMj48ebQe1Ej5Hy2A', 5.0),
 ('fRddFFEy22uBOLkKMGWKVQ', 4.111111111111111),
 ('g6lcGZ5ryfei9hG-K-uAUg', 1.0),
 ('AZDWH9VYor9iQC9sKbEcdA', 3.2),
 ('x4RzXDLErZHF3a7w_8KiMA', 4.428571428571429),
 ('ey13ct12u9so66R1fiWhrg', 3.5),
 ('NMI-8KI3WLuQ3E4xW0s2Xw', 4.125),
 ('NUGQBB7rO7hlFlYjAdm_Tw', 3.8333333333333335),
 ('ciDQWqycD55Bv-vjq95YXQ', 1.5),
 ('rlhj7U7HxC36TP0262GKZg', 5.0),
 ('qVIjvhzUdEUh-wnSqUAemg', 4.0),
 ('fZ2U15YNQHlws74Q0HJJTA', 1.0),
 ('0weqUqKDUuSF5pyvV0vL4Q', 3.0),
 ('aFswSvwxe5sX9mXd_-1zoA', 4.25),
 ('AZPeAaGPHlEnJBvK3vVeCA', 4.5),
 ('Ux6G5UYWig8zua7p61IuVQ', 3.0),
 ('ZUilCLQ5jw-DgfJxRp7jiA', 4.0),
 ('s5d62WdoTZQDQJvSIRon3Q', 5.0),
 ('7E9Oys0_dhWHaTwIhS6XTw', 3.6666666666666665),
 ('raq57b9-P5R6ejOuwaDyXg', 3.6666666666666665),
 ('Q_CZIvnsDHjpls-EPzzG7Q', 5.0),
 ('Im7h37xx35_fXRhWh5KgXQ', 5.0),
 ('LXv8RdhhvR2Cev9TsKmkfg', 4.5),
 ('NzqC5Rf5G88c9pbrt5N34A', 3.0),
 ('_Kplrc1bDTce2Pw3xRr51A', 4.0),
 ('d4CAVfujwoKdlm8cUgIlgg', 5.0),
 ('CzYbC62UgKtyGZPPQOo_LQ', 3.6666666666666665),
 ('H0VnCBlTdugRSWLxVs6TsQ', 5.0),
 ('evCcKvCe3H9bCQE6dFy_-Q', 5.0),
 ('EjsSXmGONSH0L3RFybbARg', 3.6666666666666665),
 ('qCrIUn7hu_igR3-huAI3LA', 5.0),
 ('Pi4zq4yimuTbvMjnUhuDig', 3.0),
 ('88Y0RiIM3UGVlNh-LpDmXw', 4.333333333333333),
 ('2M8uPYzCfeMDIStJ-F3iJA', 5.0),
 ('W3om4LwdjWfUY2uXEVQZzA', 3.0),
 ('ucrKQ-1T6RmFtJi6vyBa5A', 5.0),
 ('PcXC3Hs0Z1QAfkjGmNHZZg', 2.6666666666666665),
 ('YjzHJVRtydizjKLyEKfadw', 3.0),
 ('3UA89mI2pN2KphXN3QXPIQ', 4.0),
 ('BDDK2L_yDsQQJItEF0VrKg', 3.8),
 ('zcp42G-kVhNOJIZSXjlbVw', 2.0),
 ('HcKQVotenWwFRSw3Eyz4CA', 3.5),
 ('ZRZCGSbYFKJj_16gA7d-Nw', 4.0),
 ('aPtrcYXwSueHr15Ng8eg8g', 5.0),
 ('cNC1iVcgl5YHmOXTvN5zIw', 4.6),
 ('v-BcxvSmHTvPytkhc_4loA', 5.0),
 ('xsAQOkCljeBe58q2s_8nYQ', 5.0),
 ('JyY5Bv3GKzAiAdDYqJQOrA', 1.0),
 ('z3dh0m7yqi0QeEx-K1nPsQ', 5.0),
 ('Zuop-axbyA7atet3p26T3g', 3.0),
 ('soGTZwHVWV0ihupUI93eBw', 4.0),
 ('7e5tRLwO1EiAkO8V49JZIQ', 5.0),
 ('gbueQof_JlLs-poUlKJKfQ', 5.0),
 ('pWjDlvnuIMYsIOV_pruXSA', 5.0),
 ('sTyEgzs8rT290lPlDFAqlg', 3.5),
 ('14Ue_IlC0RcakG6bIuouqQ', 3.0),
 ('-Sjk-15NTj_-FgA9W96tJA', 2.0),
 ('KcgKFL2sPnByyJhV9sSZew', 2.3333333333333335),
 ('9RD4O4VtYPRPC_qII1xWgg', 5.0),
 ('mndiFHjheScZ_VQGx__XUA', 5.0),
 ('pxTtyj_t26Idb5-eGf8JyQ', 4.666666666666667),
 ('MVaoMpdz9VZzmWVf4SutPQ', 1.0),
 ('oYe4bAa9-oKdkNZ7y0irSA', 2.3333333333333335),
 ('G917VZT12pVqinRFdNpFlA', 4.222222222222222),
 ('5DkXsw7s0oIFNWhZ6LGvHQ', 5.0),
 ('7dZTkHJF083XMnDcx4QAQw', 5.0),
 ('dnf4oYOUU873X26bVWhfqA', 4.0),
 ('2rQyMc16Z_G_iNrlMxKUbw', 4.75),
 ('exNkS04nyrSLVKpSacZxNw', 5.0),
 ('fBdD69y-O15tDxy2yXZBUA', 4.2),
 ('uvav-UwHwFGGGAxAMDECZA', 3.0),
 ('XZ2yapjABSZzn7iGWNk5ng', 2.6),
 ('DSQNYvzwZqMsMYHjC0YV-A', 4.0),
 ('txa6NWIe0Z2B88DgjkI2iA', 5.0),
 ('lbZcYtIOmGfmPsISbt-5zA', 5.0),
 ('KZs4kaQIdq0QmXIcbDJabA', 5.0),
 ('iAWp45mr7_IVItKjBcoywg', 1.0),
 ('mJUq-GSnPlS4l9FYW1SCAw', 2.0),
 ('w3Soh9eSxFNXA5w_ieKpfg', 2.727272727272727),
 ('COFnyyG_h72-Ro6fVCEr8w', 5.0),
 ('rlT1A3mddtcfe0g6cqgWYA', 4.0),
 ('w3QX4vspCDAYYUE4nDQb-Q', 4.5),
 ('ZLU_Vh4kS3dUqJQ-2sdeCA', 5.0),
 ('8sgFB0hYYMb56oSgnhbsUA', 5.0),
 ('tVFCNKoMN62Y33pbW1hcDQ', 5.0),
 ('zdkYBkqw-JLEqcszokiaXg', 1.6666666666666667),
 ('mNm_0uFyo-dDS5CWH4Q33w', 3.0),
 ('BwfJx0BwTT34qhA0UOzgTw', 4.6),
 ('pPi2qwsceFdJt1Jnc2H10g', 4.5),
 ('lNHQ7ssntHRgOMvNSVT0DQ', 4.0),
 ('sZdy2AQD0gn7RMAJcu48yg', 3.875),
 ('0Stp6aD_JpDuPMAmdZjsjA', 2.625),
 ('zuubn1SFOWOy8gF_xPfBcg', 3.0),
 ('Dn1Lr8c30xCBYkpqRMfvGw', 4.0),
 ('QJ375ZGov1d6uAvsNQya6Q', 1.0),
 ('yDPhgW9x3Mu5c1EEem2SFA', 1.0),
 ('2MVYsVjhXvvpmD_Vlb7eNQ', 5.0),
 ('_W4wdEStNMlNdT5B0s7PjQ', 4.666666666666667),
 ('UpP2YXPpJ4PQo57APiFqlg', 3.5),
 ('fb5oOZ5IFVD9EqFhZrkpEQ', 4.333333333333333),
 ('vNBt_B0FUrTYUee4IzviOQ', 3.5),
 ('1dfkkKnkWmsTF5p6cO-Hag', 4.0),
 ('yXMTqlLuDAh4LDjiQYcLcQ', 5.0),
 ('LRTC_Gl63vsOjnhJtPyZXQ', 4.0),
 ('D42Uqn71eM5e8Q7r459irw', 5.0),
 ('6yvd8lkA4xdii8HQnz97Jw', 3.1052631578947367),
 ('8UJFLOgTuq0tw_bkKiKbEA', 2.3333333333333335),
 ('9ZzL6s8GGD4d8LaHS3ZODA', 4.0),
 ('y2nfV2UZQ_G4FFtw3SOd8A', 5.0),
 ('QBGEETFrylHQli9l3tJoAQ', 3.0),
 ('Vk-3iyk2iKIovB1_1Iy5LA', 4.0),
 ('K3xpTUT83MJttC0WesGHWg', 3.6),
 ('86ERj-2NhTAJ2Q8L0DOpyg', 2.8),
 ('HpWFwBILftnbKI4tVn8V8Q', 2.5),
 ('iJOX1Cqagi7UhYEl5a6keQ', 1.0),
 ('FbRuinXHHwY4UyDFeo66Yw', 1.0),
 ('rmZ9gUyoGHYSsGkg5mzZHw', 4.222222222222222),
 ('FNyfeKfUsoQ_I-GuTPOtmA', 4.0),
 ('QZgD4mKg2HKb1CNFhx0NRA', 5.0),
 ('S-aAbowezbjoF95F7B1WzA', 5.0),
 ('y370kZZQ135H91hfebwnEQ', 5.0),
 ('L_FgsF8pVq9X1_j_2N9cKg', 2.3333333333333335),
 ('9nMkmXkkJvB2oHPs6mXbIA', 3.2222222222222223),
 ('s1SmQRdza96o9vGsSulVNQ', 2.6666666666666665),
 ('e5kxYMksMVWApEJdOd0NeA', 5.0),
 ('HpDn7YJQ1V5tf5Z_PIsWKw', 2.0),
 ('CBP7YkyoRenwXNyLOru7eg', 3.0),
 ('Nnwq_o2XP2mWwMhxZCxCvw', 2.75),
 ('e7mOoAUrNtfZCyUkIelFiA', 5.0),
 ('q-vntOfaAW3lzPA1WdEzGg', 3.3333333333333335),
 ('T5EbJUbUJfuqHOzeTtK91Q', 3.6666666666666665),
 ('_XfFeHbFs4XCVY15QcZuzw', 3.0),
 ('lWwlPEbkR-yUt057Oc_wjA', 3.6363636363636362),
 ('DKTjP1CNpR1AHTwprLpc5w', 4.75),
 ('n46PcQxo1mARQih9tqwKgg', 4.0),
 ('JmsQ5wqQJHbTG1Ga3iptHg', 4.142857142857143),
 ('ucpIv1E0x8IhxeLGDXA4MQ', 2.3333333333333335),
 ('_FOO_RMTdKjtN8zKlWWe1A', 1.5),
 ('k6RFn53Ww6_lZw7E06lRCQ', 3.6),
 ('MfVl-R8EhHM7JO4NIKhm0Q', 5.0),
 ('mG4rWYm2TNiSnQbzjmmJOA', 5.0),
 ('-NnADpikTs6IWM9tbNO3Zg', 4.416666666666667),
 ('MElwGkVxMguMqWB86PBl5w', 5.0),
 ('cgg46H31Q0AZ_kM-ydUcsw', 2.0),
 ('A5nQcWRJK6uJWoYJLMJnTQ', 4.25),
 ('aJV1UH4cxeYBYCdJ5p67vA', 4.0),
 ('Yyx3WaK2FsvRixAkjJ2csw', 3.6666666666666665),
 ('qxmqV4TMXQeR-8o4iZwhjA', 5.0),
 ('d7PExbmCMloi87tLvKeudA', 3.0),
 ('phvzgb9WvV2RXA2j4SAxTQ', 4.666666666666667),
 ('_0oOOqx0YusrKhOLreoRiQ', 5.0),
 ('jsdiHrryNLE0RV9Dexayvg', 3.3333333333333335),
 ('5gkMIg4FDAQP9I3Cdb_urg', 4.666666666666667),
 ('6VdvRyE4S0QEuBesIBA8qQ', 5.0),
 ('LczpR3HqYQcNEpfOJPnh4w', 3.0),
 ('fQk7tJKxXhc9S8vEZwRYCA', 3.4705882352941178),
 ('vs8aSP9ArwqAlb0LeCnFeQ', 4.444444444444445),
 ('InwOrbViED32qs54sQy7gA', 5.0),
 ('sPOW-xLBbvx15CssC0TrNQ', 5.0),
 ('Ne8HmrGy-5av06wBZClE7w', 3.5),
 ('lpzFWgRsTTpaZFQHdGkPQA', 3.6),
 ('Tgm7JC2FHASS8bb8cTnC2w', 5.0),
 ('7gQSvZz2CkmuHJ-vg66ajA', 4.5),
 ('yb0AdKzhYwQIlt47rDq8sw', 4.5),
 ('fwIJshQi-S0IdSyIu7fYOw', 5.0),
 ('NbqsqQb4rjkfE7vNsIQSHQ', 4.4),
 ('y0TSILMTb3DiBrsrAuaLwQ', 1.0),
 ('Fbb0xtV33sBhrWD2B6L3SQ', 4.666666666666667),
 ('zYkrS3TOgYs-JAafP0ensg', 5.0),
 ('lfTF1cN7qnyrDExRbCldeA', 2.8333333333333335),
 ('IA4YtoEEVOAPn573nPUx0Q', 2.0),
 ('nvY5usxLXy7JNL5u0o-pPA', 2.8),
 ('-gz7NT6yi4I73jzbjQVcPA', 5.0),
 ('QDB6PpjeBfhVYLmqjLcHig', 3.5),
 ('YF8rBNHNCY5v8I3wPlVHrw', 4.5),
 ('z2Gi5vo-8j544qN_g6ziEg', 4.0),
 ('E8ClllB8o6jcB4FWuoVHBw', 5.0),
 ('5_vYRG4W-UyULw15aR2KHA', 5.0),
 ('FC_As88OdIdVKEb4sqd74A', 4.0),
 ('AKU1DeoYvTJHtwAty2S10g', 4.666666666666667),
 ('SldcYnEq_GSaBRSeCo6_Uw', 5.0),
 ('gC0pSyRFH44IbP3akRxqGg', 5.0),
 ('co5dKKSuYSyKk_JkPiQSNw', 5.0),
 ('2OtKt_7AZkfPXioU317R7g', 4.833333333333333),
 ('2v4jP7UweFE64rNvZIQtdg', 4.5),
 ('uREPOHsyEIfYW-q0rTymSQ', 5.0),
 ('i4JdaQg4cJ--IxRo8ly4QQ', 1.0),
 ('B3fnbki8y9E8T14ixQt0_g', 2.0),
 ('1Zv7ylHaIY-4N8j4F-5sBg', 5.0),
 ('dmzmridgGn7CvHNWRraUMg', 5.0),
 ('1Qo3Pw-XRPaaNfpGPmmORA', 2.3125),
 ('NArqAP7Fm5f2IdSSQA-OtQ', 2.0),
 ('T2RweAlLpEbTHQnMec0s8Q', 2.0),
 ('V4TYKWpVdrkYpFE2zvwWyw', 5.0),
 ('rO2ejihYTytKwFYAbe6Gig', 5.0),
 ('mxfVOxp40AOacBgPQ9l6hQ', 5.0),
 ('kIe34yhKgJiKyon9k8VQ1w', 3.0),
 ('6e8nr8nAE1M3o3NAc_h0Rg', 4.0),
 ('8Qxj_wOvdDeRbF1yvGZrvQ', 3.6),
 ('LS0HfMD-r0e_sZfZ_JbXyg', 3.0),
 ('fVDa2J9CxKzIOyCKYutjVw', 3.857142857142857),
 ('kzXxeNB8EKCu4fqZkqf7eg', 4.666666666666667),
 ('KLFDt4VM3mHg47jDziMuIA', 2.0),
 ('7-GGvE6ySiPIpb_yR4ezEg', 4.4),
 ('8tGAZyMx0XOqZbdVxcANmA', 5.0),
 ('cgL4BoPCkxu7Z12ctTT0UQ', 3.6666666666666665),
 ('7QuyAkbf_82b29qKFt6yig', 5.0),
 ('kOrUNxiayo4hUgfJZ8Helw', 4.5),
 ('tovk_78GPBVMjeE2XEMF9w', 5.0),
 ('T07nyi6Zg5Rm-jR6jBePpg', 1.8333333333333333),
 ('USYFx4m_qJSXAlWQ8nWDaw', 5.0),
 ('_tmVZgWl6uO2xr5Jvl1yCw', 4.0),
 ('tT35CXTczsgP7GjOEKTZkw', 4.25),
 ('9aCT1x8udt67wEIqv_xjTA', 3.0),
 ('y99ZYC9eyI690Csa2fGVEw', 5.0),
 ('0G6bnnyWoPOxvfxJ1p9L8Q', 2.6666666666666665),
 ('ZXTNmHnL3HLlU-qkAgvDyA', 3.0),
 ('l91pXxTZGS5CNWjNBsyg7g', 3.5),
 ('2vrdaBH6BR_B4GGtGnCmvQ', 3.0),
 ('zqqq0QR5nyAewS_f1ha1Fw', 5.0),
 ('XFyBq_SmB-M7lFQkELHKLw', 1.6),
 ('lm8KfaZux25WDh8TQ6bOpg', 2.0),
 ('TkmS9Am_Bjbv9jw6vBp6kQ', 3.5),
 ('Ariwz06at3CtbWZM-gPMAg', 4.5),
 ('PrLhQXis6Esw5z8E_68SxQ', 3.0),
 ('2by_D5ecipyAUFBQGtvfag', 5.0),
 ('V9fk50_VH2lKO_MYJzucmw', 5.0),
 ('AGx4wPCECTVEBLyl_t8zHg', 4.5),
 ('E1G3wfKRNHaIvgq1Wv_H0Q', 4.0),
 ('xZkZO-b3jF1Flcm7gnaS0A', 5.0),
 ('p8deYirUkk3JVKi_HMPckA', 3.0),
 ('P3SXJ06KdZNSTDSP0Pzobw', 5.0),
 ('75J9C6setP8iowg15aS4jw', 3.5),
 ('JW59_He7v6wdnU4ULxFVxQ', 5.0),
 ('Al2g2P9gt057Julh1qTPtQ', 5.0),
 ('fHqYsCq4IoxUJuJnPEhLrg', 5.0),
 ('YEZohrNLq_jO5ZQqm2Tymg', 3.5),
 ('B-YlY_3x18lBl5i-aEqqfQ', 5.0),
 ('j56G3m8vYtA_2Io6FcISBg', 5.0),
 ('y-mbqh1FcvGq1ltwhx6meg', 5.0),
 ('kR3xKonyRovqaWvaDey_sw', 1.0),
 ('0xJZxE6rm92DlxYe2pU42g', 1.0),
 ('0M4x1qpXH1-SsueppsxpIQ', 4.0),
 ('EqXDZ_JNMJsDwwPRb2heMQ', 5.0),
 ('kmHg50YULeTSe-bJqgGZ8w', 5.0),
 ('iXaKjTuiwyOMi9H8IN46iQ', 2.5),
 ('_Yv8jjazK3zfXGBOdJM-EA', 4.0),
 ('NDpe35oZr4WeiAjWlEzN2g', 5.0),
 ('fyxMChwdIb_RYqsSumPx2g', 4.5),
 ('31nz8urmYS2uogLPWZnx7Q', 4.0),
 ('KkiNtRLP2FhoITRoXgO_Pg', 5.0),
 ('Squ7RS58kkdReEBzcynMfw', 3.5),
 ('ja7fpRcmSWVy3p2g_oomgw', 3.0),
 ('xs3GA6q4kJpaKzPUbClw6Q', 5.0),
 ('792t7CTyHg6LTrGtlpF1cA', 5.0),
 ('87NkN5TITEUKG4UUsvg2sQ', 4.5),
 ('8ULNwWDnU-uLxkrdkSWRHQ', 3.5),
 ...]

In [24]:
train_df.describe().show()


+-------+--------------------+------------------+--------------------+
|summary|         business_id|             stars|             user_id|
+-------+--------------------+------------------+--------------------+
|  count|             1931928|           1931928|             1931928|
|   mean|                null| 3.700451569623713|                null|
| stddev|                null|1.3296492687453587|                null|
|    min|--6MefnULPED_I942...|                 1|---1lKK3aKOuomHnw...|
|    max|zzzaIBwimxVej4tY6...|                 5|zzzmshdEWLFCApxET...|
+-------+--------------------+------------------+--------------------+


In [28]:
als_model = ALS(
    itemCol='business_idx',
    userCol='user_idx',
    ratingCol='stars',
    nonnegative=True,
    regParam=0.1,
    rank=10
)

In [29]:
user_idx_mdl = (
    StringIndexer(inputCol="user_id", outputCol="user_idx")
    .fit(reviews_df)
)
business_idx_mdl = (
    StringIndexer(inputCol="business_id", outputCol="business_idx")
    .fit(reviews_df)
)

train_df1 = business_idx_mdl.transform(user_idx_mdl.transform(train_df))
test_df1 = business_idx_mdl.transform(user_idx_mdl.transform(test_df))

In [30]:
model = als_model.fit(train_df1)


---------------------------------------------------------------------------
Py4JJavaError                             Traceback (most recent call last)
<ipython-input-30-35eec0638abe> in <module>()
----> 1 model = als_model.fit(train_df1)

/usr/local/Cellar/apache-spark/2.1.1/libexec/python/pyspark/ml/base.py in fit(self, dataset, params)
     62                 return self.copy(params)._fit(dataset)
     63             else:
---> 64                 return self._fit(dataset)
     65         else:
     66             raise ValueError("Params must be either a param map or a list/tuple of param maps, "

/usr/local/Cellar/apache-spark/2.1.1/libexec/python/pyspark/ml/wrapper.py in _fit(self, dataset)
    234 
    235     def _fit(self, dataset):
--> 236         java_model = self._fit_java(dataset)
    237         return self._create_model(java_model)
    238 

/usr/local/Cellar/apache-spark/2.1.1/libexec/python/pyspark/ml/wrapper.py in _fit_java(self, dataset)
    231         """
    232         self._transfer_params_to_java()
--> 233         return self._java_obj.fit(dataset._jdf)
    234 
    235     def _fit(self, dataset):

/usr/local/Cellar/apache-spark/2.1.1/libexec/python/lib/py4j-0.10.4-src.zip/py4j/java_gateway.py in __call__(self, *args)
   1131         answer = self.gateway_client.send_command(command)
   1132         return_value = get_return_value(
-> 1133             answer, self.gateway_client, self.target_id, self.name)
   1134 
   1135         for temp_arg in temp_args:

/usr/local/Cellar/apache-spark/2.1.1/libexec/python/pyspark/sql/utils.py in deco(*a, **kw)
     61     def deco(*a, **kw):
     62         try:
---> 63             return f(*a, **kw)
     64         except py4j.protocol.Py4JJavaError as e:
     65             s = e.java_exception.toString()

/usr/local/Cellar/apache-spark/2.1.1/libexec/python/lib/py4j-0.10.4-src.zip/py4j/protocol.py in get_return_value(answer, gateway_client, target_id, name)
    317                 raise Py4JJavaError(
    318                     "An error occurred while calling {0}{1}{2}.\n".
--> 319                     format(target_id, ".", name), value)
    320             else:
    321                 raise Py4JError(

Py4JJavaError: An error occurred while calling o276.fit.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 2 in stage 34.0 failed 1 times, most recent failure: Lost task 2.0 in stage 34.0 (TID 550, localhost, executor driver): ExecutorLostFailure (executor driver exited caused by one of the running tasks) Reason: Executor heartbeat timed out after 175415 ms
Driver stacktrace:
	at org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$failJobAndIndependentStages(DAGScheduler.scala:1435)
	at org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1423)
	at org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1422)
	at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
	at org.apache.spark.scheduler.DAGScheduler.abortStage(DAGScheduler.scala:1422)
	at org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:802)
	at org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:802)
	at scala.Option.foreach(Option.scala:257)
	at org.apache.spark.scheduler.DAGScheduler.handleTaskSetFailed(DAGScheduler.scala:802)
	at org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.doOnReceive(DAGScheduler.scala:1650)
	at org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.onReceive(DAGScheduler.scala:1605)
	at org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.onReceive(DAGScheduler.scala:1594)
	at org.apache.spark.util.EventLoop$$anon$1.run(EventLoop.scala:48)
	at org.apache.spark.scheduler.DAGScheduler.runJob(DAGScheduler.scala:628)
	at org.apache.spark.SparkContext.runJob(SparkContext.scala:1925)
	at org.apache.spark.SparkContext.runJob(SparkContext.scala:1938)
	at org.apache.spark.SparkContext.runJob(SparkContext.scala:1951)
	at org.apache.spark.SparkContext.runJob(SparkContext.scala:1965)
	at org.apache.spark.rdd.RDD.count(RDD.scala:1158)
	at org.apache.spark.ml.recommendation.ALS$.train(ALS.scala:694)
	at org.apache.spark.ml.recommendation.ALS.fit(ALS.scala:464)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)
	at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
	at py4j.Gateway.invoke(Gateway.java:280)
	at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
	at py4j.commands.CallCommand.execute(CallCommand.java:79)
	at py4j.GatewayConnection.run(GatewayConnection.java:214)
	at java.lang.Thread.run(Thread.java:748)

In [13]:
sc


Out[13]:
<pyspark.context.SparkContext at 0x10f10a6a0>

In [14]:
spark


Out[14]:
<pyspark.sql.session.SparkSession at 0x11493cb00>

In [ ]:


In [ ]: