Я пытаюсь добиться этого через pyspark building sql.Цель состоит в том, чтобы объединить несколько строк в одну строку Пример: я хочу преобразовать это
+-----+----+----+-----+ | col1|col2|col3| col4| +-----+----+----+-----+ |x | y | z |13::1| |x | y | z |10::2| +-----+----+----+-----+
В
+-----+----+----+-----------+ | col1|col2|col3| col4| +-----+----+----+-----------+ |x | y | z |13::1;10::2| +-----+----+----+-----------+
Расширяя предложение, сделанное @Barmar в комментарии, вы можете выполнить SQL-запрос, подобный следующему:
SELECT col1, col2, col3, GROUP_CONCAT(col4) FROM your_table GROUP BY col1, col2, col3
Что вам нужно, так это версия spark-sql этого ответа , а именно:
query = """ select col1, col2, col3, concat_ws(';', collect_list(col4)) as col4 from some_table group by col1, col2, col3 """ spark.sql(query).show() #+----+----+----+-----------+ #|col1|col2|col3| col4| #+----+----+----+-----------+ #| x| y| z|13::1;10::2| #+----+----+----+-----------+
Но имейте в виду, что поскольку искра распространяется, это не гарантирует сохранения какого-либо определенного порядка, если только вы явно не указали порядок.
Подробнее: