Я пытаюсь разбить данные в Spark в виде RDD Array[String]
. В настоящее время я загрузил файл в RDD String
.
> val csvFile = textFile("/input/spam.csv")
Я хотел бы разделить на ,
разделитель.
Я пытаюсь разбить данные в Spark в виде RDD Array[String]
. В настоящее время я загрузил файл в RDD String
.
> val csvFile = textFile("/input/spam.csv")
Я хотел бы разделить на ,
разделитель.
Этот:
val csvFile = textFile("/input/spam.csv").map(line => line.split(","))
возвращает вам RDD[Array[String]]
.
Если вам нужен первый столбец как один RDD
, тогда с помощью функции map
возвращается только первый индекс из массива:
val firstCol = csvFile.map(_.(0))
Вы должны использовать библиотеку spark-csv, которая может анализировать ваш файл с учетом заголовков и позволяет вам указать разделитель. Кроме того, он неплохо справляется с выводом схемы. Я позволю вам прочитать документацию, чтобы узнать о множестве вариантов, имеющихся в вашем распоряжении.
Это может выглядеть так:
sqlContext.read.format("com.databricks.spark.csv")
.option("header","true")
.option("delimiter","your delimitor")
.load(pathToFile)
Имейте в виду, что это возвращает DataFrame, который вам, возможно, придется преобразовать в rdd с помощью функции .rdd
.
Конечно, вам нужно будет загрузить пакет в драйвер, чтобы он заработал.