Как преобразовать определенные строки в столбец в отдельный столбец с помощью pyspark и перечислить каждую строку с увеличением числового индекса? [Дубликат]

Попробуйте это, это сработало для меня

    LOAD DATA LOCAL INFILE 'filename.csv' INTO TABLE table_name FIELDS TERMINATED BY ',' ENCLOSED BY '"' IGNORE 1 ROWS;

IGNORE 1 ROWS здесь игнорирует первую строку, которая содержит имена полей. Обратите внимание, что для имени файла вы должны ввести абсолютный путь к файлу.

5
задан zero323 5 July 2015 в 11:35
поделиться

1 ответ

PySpark , поскольку версия 1.1 поддерживает Hadoop Input Formats . Вы можете использовать опцию textinputformat.record.delimiter для использования разделителя пользовательского формата, как показано ниже

from operator import itemgetter

retrosheet = sc.newAPIHadoopFile(
    '/path/to/retrosheet/file',
    'org.apache.hadoop.mapreduce.lib.input.TextInputFormat',
    'org.apache.hadoop.io.LongWritable',
    'org.apache.hadoop.io.Text',
    conf={'textinputformat.record.delimiter': '\nid,'}
)
(retrosheet
    .filter(itemgetter(1))
    .values()
    .filter(lambda x: x)
    .map(lambda v: (
        v if v.startswith('id') else 'id,{0}'.format(v)).splitlines()))
7
ответ дан zero323 21 August 2018 в 02:02
поделиться