У меня есть фрейм данных 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', '}'))
Это вряд ликажется эффективным, хотя. Есть ли более естественный / более эффективный способ выразить это?