У меня есть класс, который имеет некоторые атрибуты, которые можно сериализовать, и некоторые, которые нельзя сериализовать. Я знаю типы сериализуемых и не сериализуемых объектов.
import numpy as np
import pandas as pd
from pyspark.ml.classification import RandomForestClassifier, RandomForestClassificationModel
import pickle
import pyspark
serializable_types = [int, float, str, list, dict, tuple, np.ndarray, pd.core.frame.DataFrame]
pyspark_ml_types = [pyspark.sql.dataframe.DataFrame, pyspark.ml.util.MLWriteable]
class BasicTypes:
def __init__(self):
self.name = "basic_types_2"
self.pd_df = pd.DataFrame()
self.np_arr = np.array([1,2,3])
self._dictionary = {}
self._list = [1,2,3]
self._set = (1,2,3)
self._str = "basicsave"
self.model = RandomForestClassifier()
self.fit_model = RandomForestClassificationModel()
def save(self, filepath):
with open(filepath + '/' + self.name+'.pickle', 'wb') as pickle_file:
pickle.dump(self, pickle_file)
Фреймы данных Spark не сериализуются и, следовательно, должны храниться в виде файлов CSV или паркета.
Итак, есть ли способ, которым мы можем сохранить только те атрибуты класса и опустить не сериализуемые атрибуты.