Pyspark SQL dataframe - разбивает dataframe на несколько файлов - PullRequest
0 голосов
/ 07 апреля 2020

Я использую функции pyspark sql версии 2.5.4. У меня есть следующие данные в pyspark. sql .dataframe:

 df = spark.createDataFrame(
    [
        (302, 'foo'), # values
        (203, 'bar'),
        (202, 'foo'),
        (202, 'bar'),
        (172, 'xxx'),
        (172, 'yyy'),
    ],
    ['LU', 'input'] # column labels
)

display(df)

Я хотел бы создать отдельный файл CSV для каждого «LU». Таким образом, CSV будет выглядеть так:

LU_302.csv

 LU_302 = spark.createDataFrame(
    [
        (302, 'foo'), # values
    ],
    ['LU', 'input'] # column labels
)

LU_203.csv

 LU_203 = spark.createDataFrame(
    [
        (203, 'bar'), # values
    ],
    ['LU', 'input'] # column labels
)

LU_202.csv

 LU_202 = spark.createDataFrame(
    [
        (202, 'foo'), # values
        (202, 'bar'), # values
    ],
    ['LU', 'input'] # column labels
)

LU_172.csv

 LU_202 = spark.createDataFrame(
    [
        (172, 'xxx'), # values
        (172, 'yyy'), # values
    ],
    ['LU', 'input'] # column labels
)

Мои отдельные кадры данных здесь - это искровые данные, но я бы хотел, чтобы они были в CSV - это только для иллюстрации.

Таким образом, вы можете видеть, что кадр данных был разделен на отдельные кадры данных с помощью переменной 'LU'. Я искал, как это сделать, используя какое-то время l oop, которое перебирает фрейм данных и печатает новый csv в путь к файлу, но не может найти решение.

Спасибо

1 Ответ

0 голосов
/ 09 апреля 2020

Вы можете сохранить фрейм данных, используя раздел, например:

df.coalesce(1).write.partitionBy('LU').format('csv').option('header','true').save(file-path) 
...