


Impossible de décomposer le JSON imbriqué dans le dataframe Spark
Je suis nouveau sur Spark. J'essaie d'aplatir le dataframe mais je ne parviens pas à le faire via "exploser".
La structure originale du bloc de données est la suivante :
id|approvaljson 1|[{"approvertype":"1st line manager","status":"approved"},{"approvertype":"2nd line manager","status":"approved"}] 2|[{"approvertype":"1st line manager","status":"approved"},{"approvertype":"2nd line manager","status":"rejected"}]
Je dois le convertir vers le schéma suivant ?
id|approvaltype|status 1|1st line manager|approved 1|2nd line manager|approved 2|1st line manager|approved 2|2nd line manager|rejected
Je l'ai essayé
df_exploded = df.withcolumn("approvaljson", explode("approvaljson"))
Mais j'ai eu l'erreur :
Cannot resolve "explode(ApprovalJSON)" due to data type mismatch: parameter 1 requires ("ARRAY" or "MAP") type, however, "ApprovalJSON" is of "STRING" type.;
Réponse correcte
Analysez d'abord la chaîne de type json dans un tableau de structures, puis utilisez inline
pour diviser le tableau en lignes et colonnes
df1 = df.withcolumn("approvaljson", f.from_json("approvaljson", schema="array<struct<approvertype string, status string>>")) df1 = df1.select("id", f.inline('approvaljson'))
Résultats
df1.show() +---+----------------+--------+ | ID| ApproverType| Status| +---+----------------+--------+ | 1|1st Line Manager|Approved| | 1|2nd Line Manager|Approved| | 2|1st Line Manager|Approved| | 2|2nd Line Manager|Rejected| +---+----------------+--------+
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

La fonction parse analyse une chaîne et la convertit en une liste de jetons séparés par un délimiteur. Étapes : 1. Recherchez le premier caractère non délimiteur à partir du début de la chaîne ; 2. Continuez la recherche jusqu'à ce qu'un délimiteur soit rencontré et terminez la chaîne à ce délimiteur ; 3. Stockez le jeton dans le tableau de jetons ; 1-3 jusqu'à la fin de la chaîne ; 5. Ajoutez un pointeur vers NULL à la fin du tableau pour indiquer la fin du tableau.

J'ai un jeton jwt et je peux voir le jeton décodé sur le site https://jwt.io/. Cela ne m'oblige pas à définir des secrets ou des réclamations. Je cherche donc un moyen de décoder le token pour obtenir la date d'expiration sans fournir de secret. J'utilise la bibliothèque ngopkg.in/square/go-jose.v2/jwt, ci-dessous mon code : token,err:=jwt.ParseSigned(jwtToken) le jeton de valeur de retour a un champ d'en-tête qui comprend l'identifiant de clé, l'algorithme, mais ça ne me donne pas de date d'expiration. J'ai recherché ce sujet et les gens m'ont dit d'utiliser github.com/a

J'ai un cas d'utilisation où nous obtenons une valeur de clé imbriquée dans le corps x-www-form-urlencoded comme ci-dessous name=abc&age=12¬es[key1]=value1¬es[key2]=value2 J'ai essayé url.parsequery("name= abc&age=12¬es \[key1\]=value1¬es\[key2\]=value2") mais cela donne {"name":"abc","age":12,"notes[key1]":"value1", "note

En C++, il existe deux manières de convertir une chaîne en entier : en utilisant la fonction sto i(), qui reçoit directement la chaîne et renvoie un entier. Utilisez la classe isringstream pour analyser la chaîne dans un flux d'entrée et extraire les entiers. La méthode choisie dépend du format de chaîne : stoi() est plus concise si le format est sans ambiguïté et ne contient aucun caractère non numérique ; isstringstream est plus flexible si la chaîne peut contenir des caractères non numériques ou nécessite une conversion personnalisée.

La réflexion du langage Go vous permet de manipuler des valeurs de variables au moment de l'exécution, notamment en modifiant les valeurs booléennes, les entiers, les nombres à virgule flottante et les chaînes. En obtenant la valeur d'une variable, vous pouvez appeler les méthodes SetBool, SetInt, SetFloat et SetString pour la modifier. Par exemple, vous pouvez analyser une chaîne JSON dans une structure, puis utiliser la réflexion pour modifier les valeurs des champs de la structure. Il convient de noter que l'opération de réflexion est lente et que les champs non modifiables ne peuvent pas être modifiés. Lors de la modification de la valeur du champ de structure, les champs associés peuvent ne pas être automatiquement mis à jour.

L'analyse en Java fait référence au processus de conversion d'une chaîne ou d'une autre représentation en un type ou un objet spécifié. Les applications courantes incluent la conversion de chaînes en types numériques, en objets date/heure, en objets JSON et l'extraction de données à partir de documents XML. Analysez via des méthodes intégrées, des classes de formateur ou des bibliothèques tierces.

Compréhension approfondie de PHP : méthode d'implémentation de conversion de JSONUnicode en chinois Au cours du développement, nous rencontrons souvent des situations où nous devons traiter des données JSON, et l'encodage Unicode en JSON nous posera quelques problèmes dans certains scénarios, en particulier lorsqu'Unicode doit être converti Lorsque l'encodage est converti en caractères chinois. En PHP, certaines méthodes peuvent nous aider à réaliser ce processus de conversion. Une méthode courante sera présentée ci-dessous et des exemples de code spécifiques seront fournis. Tout d’abord, comprenons d’abord le Un en JSON

Les fonctions clés pour analyser les adresses dans le langage Go incluent : net.ParseIP() : analyser les adresses IPv4 ou IPv6. net.ParseCIDR() : analyser les balises CIDR. net.ResolveIPAddr() : résolvez le nom d'hôte ou l'adresse IP en adresse IP. net.ResolveTCPAdr() : résolvez le nom d'hôte et le port en adresse TCP. net.ResolveUDPAdr() : résolvez le nom d'hôte et le port en adresse UDP.
