SQL Spark Java разбивает составную строку - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь использовать функцию selectExpr split, но моя таблица выглядит примерно так:

+--------------------+--------------------+--------------------+
|              genres|              genres|             genres1|
+--------------------+--------------------+--------------------+
|Adventure|Animati...|[A, d, v, e, n, t...|[A, d, v, e, n, t...|
|Adventure|Childre...|[A, d, v, e, n, t...|[A, d, v, e, n, t...|
|      Comedy|Romance|[C, o, m, e, d, y...|[C, o, m, e, d, y...|
|Comedy|Drama|Romance|[C, o, m, e, d, y...|[C, o, m, e, d, y...|
|              Comedy|[C, o, m, e, d, y, ]|[C, o, m, e, d, y, ]|
|Action|Crime|Thri...|[A, c, t, i, o, n...|[A, c, t, i, o, n...|
|      Comedy|Romance|[C, o, m, e, d, y...|[C, o, m, e, d, y...|
|  Adventure|Children|[A, d, v, e, n, t...|[A, d, v, e, n, t...|
|              Action|[A, c, t, i, o, n, ]|[A, c, t, i, o, n, ]|
|Action|Adventure|...|[A, c, t, i, o, n...|[A, c, t, i, o, n...|
|Comedy|Drama|Romance|[C, o, m, e, d, y...|[C, o, m, e, d, y...|
|       Comedy|Horror|[C, o, m, e, d, y...|[C, o, m, e, d, y...|
|Adventure|Animati...|[A, d, v, e, n, t...|[A, d, v, e, n, t...|
|               Drama|   [D, r, a, m, a, ]|   [D, r, a, m, a, ]|
|Action|Adventure|...|[A, c, t, i, o, n...|[A, c, t, i, o, n...|
|         Crime|Drama|[C, r, i, m, e, |...|[C, r, i, m, e, |...|
|       Drama|Romance|[D, r, a, m, a, |...|[D, r, a, m, a, |...|
|              Comedy|[C, o, m, e, d, y, ]|[C, o, m, e, d, y, ]|
|              Comedy|[C, o, m, e, d, y, ]|[C, o, m, e, d, y, ]|
|Action|Comedy|Cri...|[A, c, t, i, o, n...|[A, c, t, i, o, n...|
+--------------------+--------------------+--------------------+

Мой код:

movies.selectExpr("genres", "split (genres, '\\|') as genres","split (genres, '\\|') as genres1").show();

Слова должны быть полной длины и не разделяться буква за запятой.

1 Ответ

0 голосов
/ 27 апреля 2018

Вы не избежали достаточно. Обратите внимание, что ваш код разделяется на альтернативу пустым шаблонам:

scala> spark.range(1).selectExpr("split('Action|Comedy|Drama', '\\|')").show(false)
+-----------------------------------------------------------+
|split(Action|Comedy|Drama, |)                              |
+-----------------------------------------------------------+
|[A, c, t, i, o, n, |, C, o, m, e, d, y, |, D, r, a, m, a, ]|
+-----------------------------------------------------------+

пока вам нужно:

scala> spark.range(1).selectExpr("split('Action|Comedy|Drama', '\\\\|')").show(false)
+------------------------------+
|split(Action|Comedy|Drama, \|)|
+------------------------------+
|[Action, Comedy, Drama]       |
+------------------------------+

Тонкое, но важное отличие.

...