Как сохранить максимальное значение столбца данных в искровой колонке в переменную и увеличить его - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь извлечь максимальное значение столбца "ID" в кадре данных искры и увеличить при каждом выполнении вставки

Я могу напечатать максимальное значение, но не могу сохранить его вПеременная

max_id=df.agg({"ID":"max"}).collect()[0]
print max_id["max(ID)"]

id2 =max_id["max{"ID"}] throws error "SyntaxError: invalid syntax"

Как извлечь то же самое в переменную и увеличить его.Пожалуйста, объясните мне, как этого достичь

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019

Я понял, как извлечь максимальное значение столбца как int.

maxid = int (df.describe ("ID"). Filter ("summary = 'max'"). Select ("ID"). Collect () [0] .asDict () ['ID']

печать maxid --- результат: 3

id2 = maxid + 1 печать id2 ---результат 4

0 голосов
/ 10 апреля 2019

Рассмотрим следующий кадр данных:

l1 = [(1,2),(3,4),(5,6), (12,537)]

df1 = spark.createDataFrame(l1,['ID','col2'])

max_id=df1.agg({"ID":"max"}).collect()[0]

Переменная max_id представляет собой pyspark.sql.types.Row . Вы можете проверить это с помощью type ():

type(max_id)

Выход:

<class 'pyspark.sql.types.Row'>

Элементы pyspark.sql.types.Row доступны как словари с квадратными скобками:

max_id['max(ID)']

Итак, все, что вы хотите изменить, это ваше назначение max_id:

max_id=df1.agg({"ID":"max"}).collect()[0]['max(ID)']
type(max_id)

Выход:

<class 'int'>

max_id теперь int, который может быть увеличен:

max_id = max_id+1

Проблема с вашим кодом выше в том, что вы использовали фигурные скобки.

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