Я хотел бы прочитать подмножество секционированных данных в формате JSON с искрой (3.0.1), выводящей схему из JSON.
Мои данные разделены как s3a://bucket/path/type=[something]/dt=2020-01-01/
Когда я пытаюсь прочитать это с помощью read(json_root_path).where($"type" == x && $"dt" >= y && $"dt" <= z)
, Spark пытается прочитать весь набор данных, чтобы вывести схему.
Когда я пытаюсь заранее определить пути к разделам и передать их с помощью read(paths :_*)
, Spark выдает ошибку, что не может определить схему, и мне нужно указать схему вручную. (Обратите внимание, что в этом случае, если я не укажу basePath
, искра также теряет столбцы для type
и dt
, но это нормально, я могу с этим жить.)
Я думаю, что я ищу какой-то вариант, который сообщает Spark, чтобы он мог вывести схему только из соответствующих разделов, поэтому разделение сдвигается вниз, или сообщает ему, что он может вывести схему только из JSON в пути, которые я ему дал. Обратите внимание, что у меня нет возможности вызывать mcsk
или glue
для поддержки хранилища метаданных улья. Кроме того, схема со временем меняется, поэтому ее нельзя указать заранее - явной целью является использование вывода схемы Spark JSON.
Кто-нибудь может помочь?