如何键入提示转换RDD的函数



给定一个StructType模式,我希望能够定义

def foo(row: schema)
return row.field

并让PyCharm识别行的字段,但PyCharm不将"schema"识别为类型。内衬没什么区别。(我使用的是Python 3.8(

我想您想将类型提示指定为StructType

from pyspark.sql.types import StructType
def foo(row: StructType):
return row.field

这在技术上是不正确的;row是一个row,但由于鸭子打字,它工作得很好:

from dataclasses import dataclass
@dataclass
class HintedRow:
x: int
y: str
def foo(row: HintedRow):
return row.x
df.rdd.map(foo)

现在您可以在这样的单元测试中使用它,pyspark不会抱怨,因为HintedRow的属性与Row:的属性相同

test_row = HintedRow(x=1, y='bar')
assert foo(test_row) == 1

最新更新