Как указано в комментариях, вы должны изменить .option(schema)
на .schema(schema)
.option()
требует, чтобы вы указали key
(название параметра, который вы устанавливаете) и value
(какое значение вы хотите присвоить этому параметру).Вы получаете TypeError
, потому что вы просто передаете переменную с именем schema
в option
, не указывая, какую именно опцию вы пытались установить с этой переменной.
QueryExecutionException
, который вы опубликовали вкомментарии появляются потому, что схема, которую вы определили в переменной schema
, не соответствует данным в вашем DataFrame.Если вы собираетесь указать собственную схему, вы должны убедиться, что схема соответствует данным, которые вы читаете.В вашем примере столбец id_sku
хранится как BinaryType
, но в вашей схеме вы определяете столбец как IntegerType
.pyspark
не будет пытаться согласовать различия между предоставленной вами схемой и фактическими типами данных, и будет выдано исключение.
Чтобы исправить ошибку, убедитесь, что схема, которую вы определяете правильно, представляетваши данные в том виде, в котором они хранятся в файле паркета (т.е. измените тип данных id_sku
в вашей схеме на BinaryType
).Преимущество этого состоит в том, что вы получаете небольшой выигрыш в производительности, поскольку нет необходимости выводить схему файла при каждом чтении файла паркета.