Nano Hash - криптовалюты, майнинг, программирование

Проекция / выталкивание раздела Spark и вывод схемы с секционированным JSON

Я хотел бы прочитать подмножество секционированных данных в формате 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.

Кто-нибудь может помочь?


Ответы:


1

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

Spark - объединение / объединение фреймов данных с разными Схема (имена столбцов и последовательность) в DataFrame с основной общей схемой

22.03.2021

2

Один из способов, который приходит мне в голову, - это извлечь нужную схему из одного файла, а затем принудительно заставить ее прочитать остальные.

Поскольку вы знаете первый раздел и путь, попробуйте сначала прочитать один JSON, например s3a://bucket/path/type=[something]/dt=2020-01-01/file_0001.json, затем извлеките схему.

Запустите полную часть чтения и передайте извлеченную схему в качестве параметра read(json_root_path).schema(json_schema).where(...

Схема должна быть преобразована в StructType, чтобы она была принята.

Я нашел вопрос, который может частично помочь вам Создать фрейм данных с предоставленной схемой как файл JSON

02.02.2021
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..