pyspark中的解析地址函数

2024-10-02 04:32:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在PySpark中的数据帧中添加一列,地址通过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: cannot convert 'Column' object to bytes

我如何更改parse_address的参数才能被该函数接受


Tags: 数据importstreetdfsqlparseaddress地址
1条回答
网友
1楼 · 发布于 2024-10-02 04:32:11

您需要使用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()

相关问题 更多 >

    热门问题