Ускоряет ли трансляция (ASLModel) преобразование в pyspark 2.1.1?
В моем сценарии pyspark я
- загрузка всех пользователей (около 17 миллионов)
- загрузка всех предметов (около 60000)
- запуск элементов через сохраненную StringIndexerModel
- загрузка модели ALSModel и выполнение преобразования
user_id_df = user_item_matrix.select('userid').distinct().repartition(3600)
items = items_info_df.select('item_id')
indexer_model=StringIndexerModel.load(indexer_model_path)
items_indexed = indexer_model.transform(items)
userid_itemid_cross = broadcast(items_indexed).crossJoin(user_id_df)
als_model = ALSModel.load(model_path)
recommendations_df = als_model.transform(userid_itemid_cross)
В
indexer_model.transform(items)
длится слишком долго, иногда более часа.
Мой вопрос:
- Можно ли транслировать StrngIndexerModel для ускорения процесса?
- Можно ли транслировать als_model, чтобы ускорить этап преобразования?
К вашему сведению, я использую pyspark 2.1.1