присвоение переменной из pyspark фрейма данных - PullRequest
0 голосов
/ 28 мая 2020

Я наивен в Pyspark и прошу прощения за глупый вопрос.

У меня есть фрейм данных, который содержит три поля: id, Name, Address и пять строк. Мне нужно l oop через фрейм данных и вызвать на них функцию.

Однако я не могу присвоить значение переменной из каждого столбца.

Чтение файла (который работает нормально )

file = "dbfs:/mnt/s3_path/data/file.csv"
data = spark.read.format("csv").option('inferSchema', 'true').load(file) \
              .withColumnRenamed("_c0", "id") \
              .withColumnRenamed("_c1", "name") \
              .withColumnRenamed("_c2", "add")

Попытка назначить неработающую переменную

for loop in data:
    id = loop.id
    name = loop.name
    add = loop.add
    function_call(id)

Функция никогда не получает идентификатор. вместо этого при печати идентификатора отображается столбец

Любое предложение.

1 Ответ

0 голосов
/ 28 мая 2020

Вы можете преобразовать вашу функцию в определяемую пользователем функцию, чтобы преобразовать вашу python функцию в udf, посетите этот блог .

Другой способ - вы можете собрать результат и передать его к вашей функции python, как эта, но это менее всего рекомендуется, поскольку она передает все ваши данные в драйвер, и тогда нет смысла использовать искру.

for loop in data.collect():
    id = loop.id
    name = loop.name
    add = loop.add
    function_call(id)

Я бы посоветовал вам go через некоторые basi c действие и трансформация для лучшего понимания здесь

...