У меня есть фрейм данных со многими столбцами, который я создал из файла csv, определяющего схему.Единственный интересующий меня столбец - это столбец «Точка», в котором я определил точку Магеллана (long, lat).Теперь мне нужно создать RDD [Point] из этого фрейма данных.
Ниже приведен код, который я пробовал, но он не работает, поскольку rdd
является RDD [Row] вместоСДР [Точка].
val schema = StructType(Array(
StructField("vendorId", StringType, false),
StructField("lpep_pickup_datetime", StringType, false),
StructField("Lpep_dropoff_datetime", StringType, false),
StructField("Store_and_fwd_flag",StringType, false),
StructField("RateCodeID", IntegerType, false),
StructField("Pickup_longitude", DoubleType, false),
StructField("Pickup_latitude", DoubleType, false),
StructField("Dropoff_longitude", DoubleType, false),
StructField("Dropoff_latitude", DoubleType, false),
StructField("Passenger_count", IntegerType, false),
StructField("Trip_distance", DoubleType, false),
StructField("Fare_amount", StringType, false),
StructField("Extra", StringType, false),
StructField("MTA_tax", StringType, false),
StructField("Tip_amount", StringType, false),
StructField("Tolls_amount", StringType, false),
StructField("Ehail_fee", StringType, false),
StructField("improvement_surcharge", StringType, false),
StructField("Total_amount", DoubleType, false),
StructField("Payment_type", IntegerType, false),
StructField("Trip_type", IntegerType, false)))
import spark.implicits._
val points = spark.read.option("mode", "DROPMALFORMED")
.schema(schema)
.csv("/home/riccardo/Scrivania/Progetto/Materiale/NYC-taxi/")
.withColumn("point", point($"Pickup_longitude",$"Pickup_latitude"))
.limit(2000)
val rdd = points.select("point").rdd
Как я могу получить СДР [Точка] вместо СДР [Строка] из кадра данных?Если это невозможно, какое решение вы бы предложили?Мне нужен RDD [Point] для работы с предоставленной библиотекой, которая принимает RDD [Point] в качестве входных данных.