這可能是一個小眾問題,但想象一下你有一個udf這樣的定義:
import pyspark.sql.functions as sf
import pyspark.sql.types as st
@sf.udf(returnType=st.ArrayType(st.StringType()))
def some_function(text: str) -> List[str]:
return text.split(' ')
這將回傳一個udf,我需要知道它是returnType. 有沒有辦法獲得回傳型別:
- 不在pyspark.sql.DataFrame 上呼叫 udf 并在結果上使用 dtypes() 函式
- 無需
returnType將此功能的存盤在單獨的地方
語境:我想給一個.alias到pyspark.sql.column.Column由回傳udf,但別名都應取決于其型別。
所以在虛擬代碼中,所需的結果是:
input_column_name = 'some_text_column'
expr = some_udf_function(sf.col(input_column_name))
dtype_abbreviation = get_dtype_return_type_abbreviation(expr)
expr_renamed = expr.alias(input_column_name '_' dtype_abbreviation)
get_dtype_return_type_abbreviation例如,udf對于回傳的'list_of_strings'的期望回傳st.ArrayType(st.StringType())。在這種情況下,別名將是“some_text_column_list_of_lists”。
uj5u.com熱心網友回復:
您可以訪問returnTypeudf的屬性
import pyspark.sql.functions as sf
import pyspark.sql.types as st
from typing import List
@sf.udf(returnType=st.ArrayType(st.StringType()))
def some_function(text: str) -> List[str]:
return text.split(' ')
print(some_function.returnType)
# output
ArrayType(StringType,true)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/363985.html
