Схема кадра данных отличается от схемы, определенной вручную (пример из учебника) - PullRequest
0 голосов
/ 16 марта 2020

Я просто следую примеру в Spark - полное руководство (глава 5):

from pyspark.sql.types import StructField, StructType, StringType, LongType

myManualSchema = StructType([
    StructField('DEST_COUNTRY_NAME', StringType(), True),
    StructField('ORIGIN_COUNTRY_NAME', StringType(), True),
    StructField('count', LongType(), False, metadata={'hello': 'world'})])

df = spark.read.format('json').schema(myManualSchema).load('/data/flight-data/json/2015-summary.json')

Но когда я печатаю схему, она показывает, что count по-прежнему обнуляется , Есть причина почему? Я использую PySpark (Spark 2.4.5) в Zeppelin docker 0.8.1.

print(myManualSchema)
print(df.schema)

>>> StructType(List(StructField(DEST_COUNTRY_NAME,StringType,true),StructField(ORIGIN_COUNTRY_NAME,StringType,true),StructField(count,LongType,false)))
>>> StructType(List(StructField(DEST_COUNTRY_NAME,StringType,true),StructField(ORIGIN_COUNTRY_NAME,StringType,true),StructField(count,LongType,true)))

1 Ответ

1 голос
/ 16 марта 2020

Это просто способ, которым работает Spark, если исходить из источника файла .

Это встроенная функция, позволяющая избежать сбоя во время выполнения. Это своего рода предохранительный клапан.

Если вы гуглите, вы обнаружите, что вопросы и ответы будут такими же, я уверен.

Если вы сделаете это из какого-то тривиального примера с собственным кадром данных, используя val df = Seq(...), то это может не произойти.

Не имеет ничего общего с pyspark, только аспект Spark generi c. Учебники также могут быть ошибочными, или API могут быть изменены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...