Как преобразовать значение в столбец? - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь создать новый столбец в кадре данных, используя два других значения, используя метод, приведенный ниже:

val visits = spark.read 
  .format("com.databricks.spark.csv")
  .schema(schema)
  .load(file_location)
  .withColumn("point", geometryFactory.createPoint(new Coordinate(visits.select($"venue_lon").map(_.getString(0)).collect.head,visits.select($"venue_lat").map(_.getString(0)).collect.head)))

В основном есть два столбца (venue_lat и venue_lon), и япытаясь создать географическую точку из этих значений для каждой строки.Но когда я запускаю это, он выдает ошибку:

error: type mismatch;
 found   : com.vividsolutions.jts.geom.Point
 required: org.apache.spark.sql.Column
  .withColumn("point", geometryFactory.createPoint(new Coordinate(visits.select($"venue_lon").map(_.getString(0)).collect.head,visits.select($"venue_lat").map(_.getString(0)).collect.head)))

Как мне преобразовать значение моей точки в ее эквивалент в столбце?Должен ли я добавлять столбец точек другим способом?

1 Ответ

0 голосов
/ 03 мая 2019

AFAIK, вы не можете сделать это легко с API DataFrame, обычно вы используете lit, но поддерживаются только определенные типы. Вы можете Google для UDT (пользовательские типы). Обратите внимание, что есть специальная библиотека, которая обеспечивает поддержку JTS: https://www.geomesa.org/documentation/user/spark/spark_jts.html

Для API набора данных см. Также Как хранить пользовательские объекты в наборе данных? .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...