2 votes

SparkR, diviser une colonne de chaînes JSON imbriquées en colonnes

Je viens de R, je suis nouveau dans SparkR, et j'essaie de diviser une colonne SparkDataFrame de chaînes JSON en colonnes respectives. Les colonnes dans le Spark DataFrame sont des tableaux avec un schéma comme celui-ci :

> printSchema(tst)
root
 |-- FromStation: array (nullable = true)
 |    |-- element: string (containsNull = true)
 |-- ToStation: array (nullable = true)
 |    |-- element: string (containsNull = true)

Si je regarde les données dans le visualiseur, View(head(tst$FromStation)) Je peux voir que la colonne FromStation du SparkDataFrame contient un formulaire comme celui-ci dans chaque ligne :

list("{\"Code\":\"ABCDE\",\"Name\":\"StationA\"}", "{\"Code\":\"WXYZP\",\"Name\":\"StationB\"}", "{...

Lorsque le ... indique que le motif se répète un nombre inconnu de fois.

Ma question

Comment extraire ces informations et les placer dans un cadre de données plat ? Idéalement, je voudrais faire un FromStationCode y FromStationName pour chaque observation dans la colonne du tableau imbriqué. J'ai essayé diverses combinaisons de explode y getItem ...mais en vain. Je continue à obtenir une erreur d'inadéquation du type de données. J'ai cherché des exemples d'autres personnes ayant rencontré ce problème dans Spark, mais les exemples dans SparkR sont plus rares. J'espère que quelqu'un ayant plus d'expérience dans l'utilisation de Spark/SparkR pourra m'éclairer.

Merci beaucoup, nate

0voto

Sergio Alyoshkin Points 150

Je suppose que vous devez convertir tst en objet R habituel.

df = collect(tst)

Ensuite vous opérez avec df comme avec n'importe quel autre data.frame R

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X