Могут ли форматы файлов parquet, avro и других файлов hadoop иметь разную компоновку для первой строки? - PullRequest
0 голосов
/ 06 апреля 2019

Почему я должен преобразовать СДР в ДФ, чтобы записать его как паркет, авро или другие типы?Я знаю, как писать RDD, так как эти форматы не поддерживаются.На самом деле я пытался написать файл паркета с первой строкой, содержащей только дату заголовка и другие строки, содержащие подробные записи.Пример макета файла

2019-04-06
101,peter,20000
102,robin,25000

Я хочу создать паркет с указанным выше содержимым.У меня уже есть файл csv sample.csv с указанным выше содержимым.Файл csv при чтении как фрейм данных содержит только первое поле, так как в первой строке есть только один столбец.

rdd = sc.textFile('hdfs://somepath/sample.csv')
df = rdd.toDF()
df.show()

o / p:

2019-04-06
101
102

Может кто-нибудь помочь мне с преобразованиемвсе содержимое rdd в dataframe.Даже когда я пытаюсь прочитать файл напрямую как df вместо преобразования из rdd, происходит то же самое.

1 Ответ

1 голос
/ 06 апреля 2019

Ваш файл имеет только «один столбец» в считывателе Spark, поэтому выходной файл данных будет только таким.

Вы не обязательно делали что-то не так, но ваш входной файл искажен, если вы ожидаете, что будет более одного столбца, и если это так, вы должны использовать spark.csv() вместо sc.textFile()

Почему я должен преобразовать СДР в ДФ, чтобы записать его как паркет, авро или другой тип?

Поскольку этим типам нужна схема, которой нет в СДР.

пытается записать файл паркета с первой строкой, содержащей только дату заголовка, и другими строками, содержащими подробные записи

Заголовки файла CSV должны описывать все столбцы. Над всеми строками не может быть выделенного заголовка.

Parqeut / Avro / ORC / JSON не может иметь заголовки столбцов, такие как CSV, но применяется то же самое.

...