JavaPairRDD для набора данных <Row>в SPARK - PullRequest
0 голосов
/ 13 июня 2018

У меня есть данные в JavaPairRDD в формате

JavaPairdRDD<Tuple2<String, Tuple2<String,String>>>

Я пытался использовать приведенный ниже код

 Encoder<Tuple2<String, Tuple2<String,String>>> encoder2 =
 Encoders.tuple(Encoders.STRING(), Encoders.tuple(Encoders.STRING(),Encoders.STRING()));
 Dataset<Row> userViolationsDetails = spark.createDataset(JavaPairRDD.toRDD(MY_RDD),encoder2).toDF("value1","value2");

Но как сгенерировать набор данных с 3 столбцами ???В результате вышеприведенного кода я получаю данные в 2 столбцах.Любые указатели / предложения ???

1 Ответ

0 голосов
/ 13 июня 2018

Попробуйте запустить printSchema - вы увидите, что значение2 является сложным типом.

Имея такую ​​информацию, вы можете написать:

Dataset<Row> uvd = userViolationsDetails.selectExpr("value1", "value2._1 as value2", "value2._2 as value3")

value2._1 означает первый элементкортежа внутри текущего поля "value2".Мы перезаписываем поле value2, чтобы иметь только одно значение

Обратите внимание, что это будет работать после слияния https://issues.apache.org/jira/browse/SPARK-24548 с главной ветвью.В настоящее время в Spark есть ошибка, и кортеж преобразуется в структуру с двумя полями с именем value

...