Как разделить строки Spark RDD с помощью Deliminator

Я пытаюсь разбить данные в Spark в виде RDD Array[String]. В настоящее время я загрузил файл в RDD String.

> val csvFile = textFile("/input/spam.csv")

Я хотел бы разделить на , разделитель.


person Mayank    schedule 20.04.2015    source источник
comment
spark.apache.org/docs/latest/quick-start.html   -  person Nikita    schedule 20.04.2015
comment
@ipoteka: Я перешел по этой ссылке, но ничего не нашел для файла CSV   -  person Mayank    schedule 20.04.2015
comment
stackoverflow.com/ questions / 24299427 /   -  person Nadjib Mami    schedule 20.04.2015
comment
@ipoteka: Спасибо, но не могли бы вы написать это в коде, так как я новичок в теории относительности, я не могу этого понять.   -  person Mayank    schedule 20.04.2015
comment
Если у вас сжатые сроки, я предлагаю вам изучить эту тему и поработать над ней вместо того, чтобы ждать ответа. Предоставленные ссылки содержат код. Пройдите через это, попробуйте и при необходимости задайте новые вопросы. «Plz zend me de codez» не одобряется ».   -  person maasg    schedule 20.04.2015


Ответы (2)


Этот:

val csvFile = textFile("/input/spam.csv").map(line => line.split(","))

возвращает вам RDD[Array[String]].

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

  val firstCol = csvFile.map(_.(0))
person hnahak    schedule 20.04.2015
comment
Спасибо, но моя первая строка содержит заголовок столбца, который я хотел бы исключить и использовать для определения схемы. - person Mayank; 21.04.2015
comment
проверьте эту ссылку how-do-i-convert-csv-file-to -rdd - person hnahak; 22.04.2015

Вы должны использовать библиотеку spark-csv, которая может анализировать ваш файл с учетом заголовков и позволяет вам указать разделитель. Кроме того, он неплохо справляется с выводом схемы. Я позволю вам прочитать документацию, чтобы узнать о множестве вариантов, имеющихся в вашем распоряжении.

Это может выглядеть так:

sqlContext.read.format("com.databricks.spark.csv")
.option("header","true")
.option("delimiter","your delimitor")
.load(pathToFile)

Имейте в виду, что это возвращает DataFrame, который вам, возможно, придется преобразовать в rdd с помощью функции .rdd.

Конечно, вам нужно будет загрузить пакет в драйвер, чтобы он заработал.

person vl4py    schedule 21.07.2016