PySpark 1.6: DataFrame: Conversion d'une colonne de chaîne float/double

Dans PySpark 1.6 DataFrame actuellement il n'y a pas d'Étincelle builtin de la fonction de convertir de la chaîne d'float/double.

Assumer, nous avons un RDD ('house_name', 'prix') avec les deux valeurs de chaîne. Vous souhaitez convertir, prix à partir de la chaîne de flotter.
Dans PySpark, nous pouvons appliquer la carte et python fonction de flottaison pour atteindre cet objectif.

New_RDD =  RawDataRDD.map(lambda (house_name, price): (house_name, float(x.price))    #it works

Dans PySpark 1.6 Dataframe, il ne fonctionne pas:

New_DF = rawdataDF.select('house name', float('price')) #did not work

Jusqu'à ce qu'un construit en Pyspark fonction disponible, comment obtenir cette conversion avec un UDF?
J'ai développé cette conversion de l'UDF, comme suit:

from pyspark.sql.functions import udf

from pyspark.sql.types import StringType

def string_to_float(x):return float(x)

udfstring_to_float = udf(string_to_float, StringType())

rawdata.withColumn("house name",udfstring_to_float("price") )

Est-il un meilleur moyen beaucoup plus simple pour atteindre le même?

OriginalL'auteur Sohel Khan | 2016-02-28