Как читать данные в формате csv из JavaRDD <String>с использованием схемы StructType в Spark Java - PullRequest
1 голос
/ 11 октября 2019

Используя Spark Java, я пытаюсь прочитать данные с разделенными запятыми значениями в форме JavaRDD, используя динамическую схему StructType.

Я знаю, что могу прочитать json, используя метод ниже, передавая схему (где schemaStr-> StructType и javaRDD-> JavaRDD):

Dataset<Row> df = spark.read().schema(schemaStr).json(javaRDD);


javaRDD has value as: name1,address11,city111

Пожалуйста, предложите, как читать JavaRDD, используясхема StructType, так как у меня есть разделенные запятыми данные, поступающие в виде JavaRDD. И мне все равно нужно прочитать данные, используя схему StructType, чтобы преобразовать их в фрейм данных, поскольку у меня есть утилита генератора динамической схемы.

1 Ответ

0 голосов
/ 11 октября 2019

так что если я правильно понимаю, вы хотите конвертировать JavaRDD в Dataset<Row>? Если да, вы можете создать JavaRDD<Row>, разделив ваш JavaRDD<String> и передать его в spark.createDataFrame со своей схемой

StructType schema = new StructType(new StructField[]{
                new StructField("_1", DataTypes.StringType, false, Metadata.empty()),
                new StructField("_2", DataTypes.StringType, false, Metadata.empty()),
                new StructField("_3", DataTypes.StringType, false, Metadata.empty())
        });

        JavaRDD<String> rdd1 = spark
                .range(5)
                .javaRDD()
                .map(s -> s+",b,c");

        JavaRDD<Row> rdd2 = rdd1.map(s -> s.split(","))
                .map(s -> RowFactory.create((Object[]) s));

        Dataset<Row> df = spark.createDataFrame(rdd2, schema);

        df.show();

output:

+---+---+---+
| _1| _2| _3|
+---+---+---+
|  0|  b|  c|
|  1|  b|  c|
|  2|  b|  c|
|  3|  b|  c|
|  4|  b|  c|
+---+---+---+
...