Я пытаюсь получить кадр данных искры в Aurora RDS Postgres.
Допустим, DF имеет 2 столбца и выглядит следующим образом: |ID | МояАрр >|
Мой текущий конвейер состоит из записи кадра данных в S3 в виде .csv, а затем вставки этого .csv в Aurora RDS Postgres через COPY.
Проблема, с которой я сталкиваюсь, заключается в том, что мой фрейм данных содержит столбец ArrayType (строк).
Вопросы:
- Есть ли лучший подход, который полностью пропускает S3? или подход, который использует что-то вроде посредника в формате .parquet? (похоже, что postgres не поддерживает простой способ массовой вставки файлов паркета, как я приземлился на текущий подход)
- Предполагая, что ответ на вышесказанное отрицательный, я знаю, что могу использовать
collect_ws()
для объединения массива, но формат вывода выглядит следующим образом:"A,B,C"
когда мне нужно, чтобы он выглядел так"{A,B,C}"
(это форматирование массива csv, понятное Postgres) . Я мог бы использовать UDF, но я ограничен работой в PySpark, поэтому я бы предпочел избегать UDF, поскольку этот файл на самом деле довольно большой.
parquet
илиjson
, чтобы сохранить схему (посколькуcsv
не поддерживает типыarray
), а затем использовать athenards для запроса файлов, хранящихся вs3
- person thePurplePython   schedule 25.09.2019spark
вещь; основой являетсяjava
сjvm
... разные типы данных соответствуют разным размерам байтов ...spark
на самом деле пытается улучшить это с помощью проекта кодировщикаtungsten
- person thePurplePython   schedule 26.09.2019