У меня есть данные, хранящиеся в файлах паркета и таблице кустов, разделенные по годам, месяцам и дням.Таким образом, каждый файл паркета хранится в папке /table_name/year/month/day/
.
Я хочу прочитать данные только для некоторых разделов.У меня есть список путей к отдельным разделам следующим образом:
paths_to_files = ['hdfs://data/table_name/2018/10/29',
'hdfs://data/table_name/2018/10/30']
А затем попробуйте сделать что-то вроде:
df = sqlContext.read.format("parquet").load(paths_to_files)
Однако, тогда мои данные не включают информацию о year, month and day
, поскольку это не часть данных как таковых, скорее информация хранится в пути к файлу.
Я мог бы использовать контекст sql и запрос на отправку куста с некоторым оператором select с указанием места в году., столбцы месяца и дня для выбора только данных из интересующих меня разделов. Однако я бы предпочел не создавать SQL-запросы в python, так как я очень ленив и не люблю читать SQL.
У меня есть два вопроса:
- Какой оптимальный (с точки зрения производительности) способ считывания данных, хранящихся в виде паркета, где информация о году, месяце, дне отсутствует в паркетефайл, но включен только в путь к файлу?(либо отправьте запрос улья, используя
sqlContext.sql('...')
, либо используйте read.parquet
, ... что-нибудь действительно. - Могу ли я каким-то образом извлечь столбцы разбиения при использовании подхода, описанного выше?