3
在PySpark 1.6 DataFrame中,當前沒有Spark內置函數將字符串轉換爲float/double。PySpark 1.6:DataFrame:將一個字段從字符串轉換爲float/double
假設我們有一個RDD('house_name','price'),兩個值都是字符串。你想轉換,價格從字符串浮動。 在PySpark中,我們可以應用map和python float函數來實現這一點。
New_RDD = RawDataRDD.map(lambda (house_name, price): (house_name, float(x.price)) #it works
在PySpark 1.6數據幀,這是行不通的:
New_DF = rawdataDF.select('house name', float('price')) #did not work
直到內置Pyspark功能可用,如何做到實現這種轉換與UDF? 我開發這個轉換UDF如下:
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"))
是否有更好和更簡單的方法來達到同樣的?
這不適合我@Jaco工作。 OP說他使用的是pyspark 1.6,而你鏈接的文檔是1.3。當我在1.6上試試這個時,我得到'AttributeError:'DoubleType'對象沒有屬性'alias' ' – Sother
你有導入'from pyspark.sql.types import DoubleType'嗎?我確信在發佈之前我已經在PySpark 1.6上進行了測試。 – Jaco
FIX:應該是 '''rawdata.withColumn(「房子名稱」,rawdata [「價格」]。cast(DoubleType())。別名(「價格」)''' –