我总是得到这个错误: AnalysisException:由于数据类型不匹配,u“无法解析'substring(1,1,-1)':参数1需要(字符串或二进制)类型,但' l'是阵列类型的;“spark无法创建LabeledPoint
很混乱,因为l [0]是一个字符串,并且与arg 1匹配。 dataframe只有一列名为'value'的列,它是一个逗号分隔的字符串。 我想将此原始数据框转换为LabeledPoint对象的另一个数据框,第一个元素为'label',其他元素为'features'。
from pyspark.mllib.regression import LabeledPoint
def parse_points(dataframe):
df1=df.select(split(dataframe.value,',').alias('l'))
u_label_point=udf(LabeledPoint)
df2=df1.select(u_label_point(col('l')[0],col('l')[1:-1]))
return df2
parsed_points_df = parse_points(raw_data_df)
您应该改善的问题,我无法理解这一点。 –