Создание JavaRDD
из другого неявно, когда вы применяете преобразование, такое как map
. Здесь RDD, который вы создаете, является RDD массивов строк (результат split
).
Чтобы получить СДР из строк, просто создайте строку из массива:
JavaRDD<String> vertexRDD = ctx.textFile("");
JavaRDD<String[]> rddOfArrays = vertexRDD.map(line -> line.split("\t"));
JavaRDD<Row> rddOfRows =rddOfArrays.map(fields -> RowFactory.create(fields));
Обратите внимание, что если ваша цель состоит в том, чтобы преобразовать JavaRDD<Row>
в кадр данных (Dataset<Row>
), есть более простой способ. Вы можете изменить опцию разделителя при использовании spark.read
, чтобы избежать необходимости использовать RDD:
Dataset<Row> dataframe = spark.read()
.option("delimiter", "\t")
.csv("your_path/file.csv");