Вот как добавить имена столбцов с помощью DataFrame:
Предположим, ваш CSV имеет разделитель «». Подготовьте следующие данные перед передачей его в DataFrame:
f = sc.textFile("s3://test/abc.csv")
data_rdd = f.map(lambda line: [x for x in line.split(',')])
Предположим, данные имеет 3 колонки:
data_rdd.take(1)
[[u'1.2', u'red', u'55.6']]
Теперь вы можете указать имена столбцов при передаче этого RDD в DataFrame с помощью toDF()
:
df_withcol = data_rdd.toDF(['height','color','width'])
df_withcol.printSchema()
root
|-- height: string (nullable = true)
|-- color: string (nullable = true)
|-- width: string (nullable = true)
Если не указать имена столбцов, вы получите DataFrame с именами столбцов по умолчанию '_1', '_2', ...:
df_default = data_rdd.toDF()
df_default.printSchema()
root
|-- _1: string (nullable = true)
|-- _2: string (nullable = true)
|-- _3: string (nullable = true)
_Is DataFrame путь сюда? _ - да, это так. Или 'namedtuple', если вы планируете использовать много простого кода Python. – zero323
DataFrame представляет собой комбинацию схемы и rdd. Прямо сейчас переменная «f» в вашем коде является rdd. Итак, если вы добавите в нее схему, вы получите DataFrame. Тогда у него будут заголовки и имена столбцов. Также опубликуйте, что вы можете зарегистрировать эти данные в виде таблицы и выполнить SQL поверх нее. –