Эффективное преобразование массива Spark в одну строку для Postgres - PullRequest
0 голосов
/ 03 октября 2019

У меня есть фрейм данных Pyspark, где один из столбцов является массивом строк (длина массива может варьироваться от нескольких тысяч до 100 тыс.).

Столбец с массивом должен быть выведен как.csv с этим конкретным форматированием строки "{elem1, elem2, elem3, ...}, чтобы я мог COPY передать его в Postgres.

Мой текущий подход состоит в преобразовании столбца массива в строковый столбец с concat_ws(), а затем с помощью regexp_replace() для вставки начальных и конечных фигурных скобок.

outputDF = myDF.withColumn('my_array', concat_ws(',', 'my_array')) \
    .withColumn('my_array', regexp_replace('my_array', r'\A', '{')) \
    .withColumn('my_array', regexp_replace('my_array', r'\Z', '}'))

Это вряд ликажется эффективным, хотя. Есть ли более естественный / более эффективный способ выразить это?

...