Как работает отображение на rdd в pyspark? - PullRequest
0 голосов
/ 18 января 2019

Я изучал pyspark, когда столкнулся с этим.

from pyspark.sql import Row
df = spark.createDataFrame([Row([0,45,63,0,0,0,0]),
                           Row([0,0,0,85,0,69,0]),
                           Row([0,89,56,0,0,0,0])],
                           ['features'])

+--------------------+
|            features|
+--------------------+ 
|[0, 45, 63, 0, 0,...|
|[0, 0, 0, 85, 0, ...|
|[0, 89, 56, 0, 0,...|
+--------------------+

sample = df.rdd.map(lambda row: row[0]*2)
sample.collect()

[[0, 45, 63, 0, 0, 0, 0, 0, 45, 63, 0, 0, 0, 0],
[0, 0, 0, 85, 0, 69, 0, 0, 0, 0, 85, 0, 69, 0],
[0, 89, 56, 0, 0, 0, 0, 0, 89, 56, 0, 0, 0, 0]]

Мой вопрос: почему строка [0] принимается как полный список, а не как одно значение? Какое свойство дает вышеуказанный результат

1 Ответ

0 голосов
/ 18 января 2019

Это полный список, который вы дали ему как единое целое, и вы также определили его в одном столбце «функции»

когда Вы говорите

df.rdd.map(lambda row: row[0]*2)

Вы просто спрашиваете spark, что «я хочу, чтобы все значения в этом списке встречались дважды». Следовательно, вы получаете результат, который получаете.

Теперь Как получить Индивидуальные значения в списке.

df = spark.createDataFrame([Row(0,45,63,0,0,0,0),
                       Row(0,0,0,85,0,69,0),
                       Row(0,89,56,0,0,0,0)],
                       ['feature1' , 'feature2' , 'feature3' , 'feature4', 'feature5' , 'feature6' , 'feature7'])

Это должно дать вам доступ к отдельным значениям в выделенном столбце.

Примечание: синтаксис для схемы - это просто представление. Пожалуйста, обратитесь к документам для точного синтаксиса.

Надеюсь, это поможет:)

...