我已经用导入了一个csv文件到spark中pyspark.sql并通过以下方式将其注册为临时表:
import pyspark
from pyspark.sql import SQLContext
sc = pyspark.SparkContext()
from pyspark.sql import HiveContext
sqlCtx= HiveContext(sc)
spark_df = sqlCtx.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load("./data/geo_file.csv")
spark_df.registerTempTable("geo_table")
在“geo_table”表中,有一个名为“geo_location”的列,其值如下:
US>TX>618
US>NJ>241
US>NJ
我的问题是,如何将这些文本值转换为数值?在sql或pyspark.sql?在
在熊猫,我会这么做
^{pr2}$
在我看来,有几种方法可以解决你的问题。如果您只需要将“地理位置”列转换为数字列-可以使用UDF。您可以通过以下方式定义UDF(抱歉,Scala代码):
之后,您可以按以下方式使用此自定义项:
^{pr2}$另外,我认为应该可以使用UserDefinedType作为列类型。不过,要看你用的是哪种版本的Spark。请看这个问题以获得更多信息:How to define schema for custom type in Spark SQL?
我希望你会发现这个信息有用。在
相关问题 更多 >
编程相关推荐