Comment accéder aux valeurs de colonne de tableau?
J'ai un Dataframe, avec une colonne. Chaque ligne de cette colonne est un Tableau de Chaîne de valeurs:
Valeurs dans mon Étincelle 2.2 Dataframe
["123", "abc", "2017", "ABC"]
["456", "def", "2001", "ABC"]
["789", "ghi", "2017", "DEF"]
org.apache.spark.sql.DataFrame = [col: array]
root
|-- col: array (nullable = true)
| |-- element: string (containsNull = true)
Quelle est la meilleure façon d'accéder aux éléments du tableau? Par exemple, je voudrais extraire des valeurs distinctes dans la quatrième élément pour l'année 2017 (réponse "ABC", "DEF").
Vous devez vous connecter pour publier un commentaire.
Depuis Étincelle 2.4.0, il y a une nouvelle fonction
element_at($array_column, $index)
.Voir: https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.sql.functions$@element_at(column:org.apache.spark.sql.Column,value:Any):org.apache.spark.sql.Column
voir
getItem
de https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.sql.ColumnAccéder à des éléments dans une colonne de tableau est par getItem opérateur.
Vous pouvez également utiliser
(ordinal)
pour accéder à un élément àordinal
position.C'est juste une question de choix personnel et le goût de l'approche qui vous convient le mieux, c'est à dire
getItem
ou tout simplement(ordinal)
.Et dans votre cas,
where
/filter
suivie parselect
avecdistinct
donner la bonne réponse (comme @Will n').