Как напечатать значение итерации, используя pyspark for loop - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь напечатать порог для значений данных, используя pyspark. Ниже приведен код R, который я написал, но я хочу это в Pyspark, и я не могу понять, как это сделать в Pyspark. Любая помощь будет принята с благодарностью!

Значения dataframe выглядит примерно так:

values dataframe is

vote
0.3
0.1
0.23
0.45
0.9
0.80
0.36
# loop through all link weight values, from the lowest to the highest
for (i in 1:nrow(values)){
  # print status
  print(paste0("Iterations left: ", nrow(values) - i, "   Threshold: ", values[i, w_vote]))
}

Я пытаюсь в pyspark, но я застрял здесь

for row in values.collect():
     print('iterations left:',row - i, "Threshold:', ...)

1 Ответ

1 голос
/ 10 июня 2019

Каждый язык или инструмент имеет свой способ обработки вещей.Ниже я отвечаю так, как вы пытались -

df = sqlContext.createDataFrame([
[0.3],
[0.1],
[0.23],
[0.45],
[0.9],
[0.80],
[0.36]
], ["vote"])

values = df.collect()
toal_values = len(values)

#By default values from collect are not sorted using sorted to sort values in ascending order for vote column
# If you don't want to sort these values at python level just sort it at spark level by using df = df.sort("vote", ascending=False).collect()
# Using enumerate to knowing about index of row

for index, row in enumerate(sorted(values, key=lambda x:x.vote, reverse = False)):
     print ('iterations left:', toal_values - (index+1), "Threshold:", row.vote)

iterations left: 6 Threshold: 0.1
iterations left: 5 Threshold: 0.23
iterations left: 4 Threshold: 0.3
iterations left: 3 Threshold: 0.36
iterations left: 2 Threshold: 0.45
iterations left: 1 Threshold: 0.8
iterations left: 0 Threshold: 0.9

Не рекомендуется использовать сбор Если вы работаете с большими данными, это сломает вашу программу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...