Я хочу преобразовать строковые элементы в следующем СДР
data0 = sc.parallelize( [('0', '2.023'), ('0.2', '4.235'), ('1.23', '0.45'), ('1.23', '10.2'), ('1.0', '20.0')] )
в числовые значения. Таким образом, ожидаемый результат равен
[(0, 2.023), (0.2, 4.235), (1.23, 0.45), (1.23, 10.2), (1.0, 20.0)]
Я пытался
data0.map(lambda x: x.split(',')).map(lambda x: (float(x[0]),float(x[1])))
и
data0.map(lambda line: line.split(",")).map(lambda numbers: Vectors.dense(numbers.map(_.toInt)))
в Преобразование строки RDD в Int RDD . Однако ни один из них не работал.
Я знаю, что, возможно, есть несколько подходов, которые сначала конвертируют RDD в dataframe, а затем делают это. Что если я захочу завершить свою задачу в СДР, не меняя ее на фрейм данных (потому что, может быть, очень дорого), как мне это сделать? Это всего лишь пример. В более общем случае предположим, что в одной строке много элементов, что не позволяет сформулировать их один за другим. Тогда как мы можем это сделать?
Спасибо.