Я понимаю, что при работе с фреймворком данных spark вы захотите импортировать любой источник данных непосредственно как фреймворк данных spark. В моем случае мне нужно использовать функции pandas, чтобы выдуть таблицу и создать фиктивные переменные. И поэтому я использую эту функцию в своей функции .map() после чтения данных.
def parsePoint(line):
listmp = list(line.split('\t'))
dataframe = pd.DataFrame(pd.get_dummies(listmp[1:]).sum()).transpose()
dataframe.insert(0, 'status', dataframe['accepted'])
if 'NULL' in dataframe.columns:
dataframe = dataframe.drop('NULL', axis=1)
if '' in dataframe.columns:
dataframe = dataframe.drop('', axis=1)
if 'rejected' in dataframe.columns:
dataframe = dataframe.drop('rejected', axis=1)
if 'accepted' in dataframe.columns:
dataframe = dataframe.drop('accepted', axis=1)
return dataframe
Моя функция .reduce() такова:
parsedData = data.map(parsePoint).reduce(lambda a, b: a.append(b)).fillna(0)
Это дает мне именно то, что я хочу, но теперь мне нужно получить этот рекомбинированный кадр данных pandas в labeledPoints, чтобы я мог использовать его с алгоритмами MLlib. Как я могу сделать противоположное функции .toPandas() и преобразовать из pandas в искровой фрейм данных или labeledPoint?