PySpark UDF Returns [Ljava.lang.Object;@]
PySpark UDF Returns [Ljava.lang.Object;@]
我有以下功能
from pyspark.sql.functions import udf, struct
from pyspark.sql.types import StringType, ArrayType
def f(row):
.
.
.
<compute my_field>
print(f'my_field: {my_field}; type(my_field): {type(my_field)}')
return str(my_field), StringType()
f_udf = udf(f)
new_df = df.withColumn('new_field', udf(struct([df[column] for column in df.columns if column != 'reserved']))
这是打印出来的示例 -
my_field: erfSSSWqd; type(my_field): <class 'str'>
这里是new_df
+--------------+----------------------------+
|field |new_field |
+--------------+----------------------------+
|WERWERV511 |[Ljava.lang.Object;@280692a3|
|WEQMNHV381 |[Ljava.lang.Object;@3ee30d9c|
|FSLQCXV881 |[Ljava.lang.Object;@16cbf3a9|
|SDTEHLV980 |[Ljava.lang.Object;@54e6686 |
|SDFWERV321 |[Ljava.lang.Object;@72377b29|
+--------------+----------------------------+
但我希望 new_field 列中有字符串。
看起来类型没问题。事实上,我什至不需要用 str()
包裹 my_field
,但我这样做是为了以防万一。
有人知道如何解决这个问题吗?
而不是 return 元组 str(my_field), StringType()
只有 return 值 str(my_field)
.
此外,您可以在此处指定 UDF 的 return 类型作为第二个参数
f_udf = udf(f,StringType())
让我知道这是否适合你。
我有以下功能
from pyspark.sql.functions import udf, struct
from pyspark.sql.types import StringType, ArrayType
def f(row):
.
.
.
<compute my_field>
print(f'my_field: {my_field}; type(my_field): {type(my_field)}')
return str(my_field), StringType()
f_udf = udf(f)
new_df = df.withColumn('new_field', udf(struct([df[column] for column in df.columns if column != 'reserved']))
这是打印出来的示例 -
my_field: erfSSSWqd; type(my_field): <class 'str'>
这里是new_df
+--------------+----------------------------+
|field |new_field |
+--------------+----------------------------+
|WERWERV511 |[Ljava.lang.Object;@280692a3|
|WEQMNHV381 |[Ljava.lang.Object;@3ee30d9c|
|FSLQCXV881 |[Ljava.lang.Object;@16cbf3a9|
|SDTEHLV980 |[Ljava.lang.Object;@54e6686 |
|SDFWERV321 |[Ljava.lang.Object;@72377b29|
+--------------+----------------------------+
但我希望 new_field 列中有字符串。
看起来类型没问题。事实上,我什至不需要用 str()
包裹 my_field
,但我这样做是为了以防万一。
有人知道如何解决这个问题吗?
而不是 return 元组 str(my_field), StringType()
只有 return 值 str(my_field)
.
此外,您可以在此处指定 UDF 的 return 类型作为第二个参数
f_udf = udf(f,StringType())
让我知道这是否适合你。