La construction d'une ligne à partir d'un dict en pySpark

Je suis en train de créer dynamiquement une ligne dans pySpark 1.6.1, puis de l'intégrer dans un dataframe. L'idée générale est d'étendre les résultats de describe pour inclure, par exemple, l'inclinaison et le coefficient d'aplatissement. Voici ce que j'ai pensé devrait fonctionner:

from pyspark.sql import Row

row_dict = {'C0': -1.1990072635132698,
            'C3': 0.12605772684660232,
            'C4': 0.5760856026559944,
            'C5': 0.1951877800894315,
            'C6': 24.72378589441825,
            'summary': 'kurtosis'}

new_row = Row(row_dict)

Mais cela renvoie TypeError: sequence item 0: expected string, dict found qui est assez clair erreur. Ensuite, j'ai trouvé que si je définis les champs de Ligne tout d'abord, je pourrait utiliser un dict:

r = Row('summary', 'C0', 'C3', 'C4', 'C5', 'C6')
r(row_dict)
> Row(summary={'summary': 'kurtosis', 'C3': 0.12605772684660232, 'C0': -1.1990072635132698, 'C6': 24.72378589441825, 'C5': 0.1951877800894315, 'C4': 0.5760856026559944})

Qui serait un bel étape, sauf qu'il ne semble pas comme je peux dynamiquement spécifier les champs dans Row. J'ai besoin de ce travail pour un nombre inconnu de lignes avec des noms inconnus. Selon la documentation, vous pouvez effectivement aller dans l'autre sens:

>>> Row(name="Alice", age=11).asDict() == {'name': 'Alice', 'age': 11}
True

Donc il semble que je devrais être capable de faire cela. Il apparaît aussi il peut y avoir certaines fonctionnalités dépréciées à partir d'anciennes versions qui ont permis, par exemple ici. Est-il plus équivalent actuel je suis absent?

OriginalL'auteur Jeff | 2016-07-07