Pyspark RDD операции!(Python3, Spark2) - PullRequest
       7

Pyspark RDD операции!(Python3, Spark2)

0 голосов
/ 20 сентября 2018

У меня есть файл 'input.txt', содержащий следующее:

[10,21,90,34,40,98,21,44,59,21,90,34,29,19, 21,90,34,29,49,78 ]

Поскольку я начинающий, я пытаюсь выполнить следующие действия над вышеуказанным файлом, используя операции RDD.(Я смог выполнить это, скопировав элементы RDD в список):

  • Я хочу отобразить приведенный выше список и первый элемент списка.

  • Я хочу отобразить отсортированный вывод (восходящий и нисходящий) через СДР и отобразить отдельные элементы списка с помощью СДР.

  • Отображение максимума и минимума данного списка.

  • Объедините приведенный выше список с новым вводом в форме: {30,35,45,60,75,85} и отобразите вывод.

  • Укажите сумму элементов списка с использованием Reduce с различными значениями.

  • Укажите сумму элементов списка с помощью Reduce.

Могу ли я выполнить все вышеперечисленные задачи, используя действия и преобразования Pyspark, или я слишком амбициозен?Извиняюсь за столько вопросов.Я был в искре только неделю.

РЕДАКТИРОВАТЬ

Я не хочу жестко кодировать список в моем коде.Я хочу прочитать файл (input.txt).Я попытался использовать

data = sc.textFile("./input.txt")
collected = data.collect()
print(data)
d2 = d1[0].encode('ascii', 'ignore')
print(d2)

Но, используя этот подход, я не могу преобразовать rdd в список Int без преобразования его в обычный список Python (d3 = d2.strip ("{}").Трещина(',') ).

Я не могу получить max, используя max (d2) или d2.max (), так как он говорит, что max не поддерживается.

Надеюсь, теперь я проясняюсь!

1 Ответ

0 голосов
/ 20 сентября 2018

Сначала получите данные в СДР:

rdd = sc.parallelize([10,21,90,34,40,98,21,44,59,21,90,34,29,19, 21,90,34,29,49,78])

Отобразите приведенный выше список и первый элемент списка.

rdd.collect()
rdd.take(1)

Также я хочу отобразить отсортированный вывод(восходящий и нисходящий) через СДР и отображать отдельные элементы списка с помощью СДР.

rdd.distinct().sortBy(lambda x:x).collect()
rdd.distinct().sortBy(lambda x:-x).collect()

Отображать максимум и минимум данного списка.

rdd.max()
rdd.min()

Объединить приведенный выше список сновый ввод в форме: {30,35,45,60,75,85} и вывод на экран.

newrdd = sc.parallelize({30,35,45,60,75,85})
rdd.union(newrdd).collect()

Укажите сумму элементов списка с использованием метода Reduce с различными значениями.

rdd.distinct().reduce(lambda x,y:x+y)

Укажите сумму элементов списка с помощью метода Reduce.

rdd.reduce(lambda x,y:x+y)

PS Фактически, если вы сортируете свой элемент по убыванию rdd, элемент max будет первым элементом этого rdd.Итак, вы можете получить максимум этого rdd без , используя max(), так что это код:

rdd.distinct().sortBy(lambda x:-x).take(1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...