pyspark中python的解析地址函数

ryoqjall  于 2021-07-14  发布在  Spark
关注(0)|答案(1)|浏览(366)

我想在pyspark的Dataframe中添加一列,地址通过libpostal库解析。

import pyspark.sql.functions as sf
from postal.parser import parse_address
df = spark.read.parquet(path_hdfs)
df = df.select("id", "name" ,"street", "cty")\
       .withColumn("address", parse_address(sf.concat(col("street"),sf.lit(" ") ,col("cty"))))\
       .dropDuplicates()

但我得到了一个错误:
typeerror:无法将“column”对象转换为字节
如何更改parse\u address的参数以被该函数接受?

ntjbwcob

ntjbwcob1#

您需要使用一个udf来调用python库,例如。

df = df.select("id", "name" ,"street", "cty")\
       .withColumn("address", 
           sf.udf(parse_address, 'array<struct<val:string,key:string>>')
           (sf.concat("street", sf.lit(" "), "cty"))
       )\
       .dropDuplicates()

相关问题