Как проанализировать столбец (со списком данных) внутри DataFrame? - PullRequest
0 голосов
/ 26 января 2019

В DataFrame есть столбец, содержащий список, и я хочу проанализировать этот список для первого элемента и заменить этот столбец им.Например:

col1
[elem1, elem2]
[elem3, elem4]

Я хочу сделать это:

col1
elem1
elem3

Я пытался dataFrameName.withColumn("col1", explode($"col1")), но это дает мне исключение NoSuchElementException.Какой правильный способ сделать это?

1 Ответ

0 голосов
/ 26 января 2019

Чтобы заменить столбец ArrayType col1 его первым элементом, explode не будет полезным. Вы можете просто заменить его на $"col1"(0) (или $"col1".getItem(0)), как показано ниже:

import spark.implicits._
import org.apache.spark.sql.functions._

val df = Seq(
  Seq("elem1", "elem2"),
  Seq("elem3", "elem4")
).toDF("col1")

df.withColumn("col1", $"col1"(0)).show
// +-----+
// | col1|
// +-----+
// |elem1|
// |elem3|
// +-----+

Обратите внимание, что у вас может быть отдельная проблема с обнаруженной NoSuchElementException, так как explode, при которой столбец ArrayType обычно не генерирует такое исключение.

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