TypeError: схема должна быть StructType или list или None - PullRequest
0 голосов
/ 25 октября 2018

Может кто-нибудь объяснить мне, что происходит в моем коде?Ниже я приведу небольшой воспроизводимый фрагмент.Когда я выполняю df = spark.createDataFrame(rows, mh.get_schema), я получаю следующую ошибку:

TypeError: schema should be StructType or list or None, but got:
<bound method MyHandler.get_schema of <my_handler.MyHandler instance
at 0x7f2f359890e0>>

Но почему ???Схема определена в __init__(self) из MyHandler.

class MyHandler:

    def __init__(self):

        self.alarm_schema = StructType(
            [
                StructField('alarm_id', StringType()),
                StructField('timestamp',LongType())
            ])

    def get_schema(self):
        return self.alarm_schema


def main(argv):

    spark = SparkSession \
                 .builder \
                 .appName("Test") \
                 .master("local[2]") \
                 .getOrCreate()

    mh = MyHandler()

    rows = [
            (
                "12",
                1536585248000
            )
    ]

    df = spark.createDataFrame(rows, mh.get_schema) 


if __name__ == '__main__':
    main(sys.argv[1:])

1 Ответ

0 голосов
/ 25 октября 2018

Либо вызовите метод:

df = spark.createDataFrame(rows, mh.get_schema()) 

, либо сделайте его свойством

@property
def get_schema(self):
    return self.alarm_schema
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...