Идентифицировать переменную разделения в файле паркета

Есть ли простой способ определить переменную, которая использовалась для разделения набора данных паркета?


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

# Load library
library(arrow)

# Write data to parquet
mtcars |> write_dataset("~/boop", partitioning = "cyl")

Одним из подходов к определению переменной (переменных) разбиения может быть просмотр файлов, из которых состоит паркет, например:

# Open dataset & see files that are part of parquet
open_dataset("~/boop")$files

# [1] "XXXXX/boop/cyl=4/part-0.parquet" "XXXXX/boop/cyl=6/part-0.parquet"
# [3] "XXXXX/boop/cyl=8/part-0.parquet"

Здесь я вижу, что cyl — это переменная разделения, но мне нужно было бы проанализировать ее, и если есть несколько переменных разделения, это может быть немного вовлечено.

Есть ли простой способ определения переменной разделения? Например, есть ли переменная метаданных, которая записывает эту информацию?

Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Веб-скрейпинг, как мы все знаем, это дисциплина, которая развивается с течением времени. Появляются все более сложные средства борьбы с ботами, а...
Калькулятор CGPA 12 для семестра
Калькулятор CGPA 12 для семестра
Чтобы запустить этот код и рассчитать CGPA, необходимо сохранить код как HTML-файл, а затем открыть его в веб-браузере. Для этого выполните следующие...
ONLBest Online HTML CSS JAVASCRIPT Training In INDIA 2023
ONLBest Online HTML CSS JAVASCRIPT Training In INDIA 2023
О тренинге HTML JavaScript :HTML (язык гипертекстовой разметки) и CSS (каскадные таблицы стилей) - две основные технологии для создания веб-страниц....
Как собрать/развернуть часть вашего приложения Angular
Как собрать/развернуть часть вашего приложения Angular
Вам когда-нибудь требовалось собрать/развернуть только часть вашего приложения Angular или, возможно, скрыть некоторые маршруты в определенных средах?
Запуск PHP на IIS без использования программы установки веб-платформы
Запуск PHP на IIS без использования программы установки веб-платформы
Установщик веб-платформы, предлагаемый компанией Microsoft, перестанет работать 31 декабря 2022 года. Его закрытие привело к тому, что мы не можем...
Оптимизация React Context шаг за шагом в 4 примерах
Оптимизация React Context шаг за шагом в 4 примерах
При использовании компонентов React в сочетании с Context вы можете оптимизировать рендеринг, обернув ваш компонент React в React.memo сразу после...
2
0
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Пока кто-то не предложит лучшее решение, похоже, это работает:

# Load library
library(arrow)

# Write data to parquet
mtcars |> write_dataset("~/boop", partitioning = c("cyl", "gear"))

# Files in parquet
pq_files <- open_dataset("~/boop")$files

# Extract partiton names assuming */partition_name=value/* format
regmatches(pq_files, gregexpr("(?<=/)[^/]*(?==)", pq_files, perl = TRUE)) |> unlist() |> unique()
# [1] "cyl"  "gear"

Как было предложено в вопросе, я просматриваю файлы в паркете, а затем использую некоторое регулярное выражение для поиска текста, зажатого между / и =, который должен соответствовать разделам.

Другие вопросы по теме