Как исправить ошибку «AssertionError: keyType должен быть DataType» - PullRequest
0 голосов
/ 04 июля 2019

Потоковая передача данных в формате JSON от Kafka-производителя консоли PySpark - содержит анализатор данных json в dataframe.

Я попытался проанализировать этот json, используя данную схему. Но он выдает ошибку об «AssertionError: keyType должен быть DataType» Что мне нужно сделать, чтобы проанализировать json с пользовательской схемой?

schema = StructType()\
    .add("contact_id", LongType())\
    .add("first_name", StringType())\
    .add("last_name", StringType())\
    .add("contact_number", MapType(StringType,
                                   StructType()
                                   .add("home", LongType())
                                   .add("contry_code", StringType())))

Ожидается этот формат Данные JSON: {"contact_id": "23", "first_name": "John", "last_name": "Doe", "contact_number": {"home": 4564564567, "country_code": "+ 1"}}

1 Ответ

0 голосов
/ 10 июля 2019
I have found the solution. This should be the correct schema definition.

schema = StructType([
    StructField('contactId', LongType(), True),
    StructField('firstName', StringType(), True),
    StructField('lastName', StringType(), True),
    StructField("contactNumber", ArrayType(
        StructType([
                StructField("type", StringType(), True),
                StructField("number", LongType(), True),
                StructField("countryCode", StringType(), True)
            ])
        ), True)
    ])
...