Я хочу проверить производительность Presto на локальных данных TPCH, закодированных в формате Parquet.
У меня есть таблицы TPCH, закодированные в Parquet, которые хранятся в папке /home/data/tpch
, и создать таблицу в Presto следующим образом
create table hive.tpch_5.region
(regionkey int, name varchar, r_comment varchar)
with (format= 'PARQUET', external_location = 'file:///home/data/tpch/');
Выбор из regionkey
работает хорошо. Но выбор имени приводит к следующей ошибке:
Query 20191014_020453_00040_bfdq8 failed: The column name is declared as type string, but the Parquet file declares the column as type INT32
Однако столбец name
имеет тип BINARY. Вот вывод из parquet-tools
file schema: region
-------------------------------------------------------------------------------------------------------------------
region_key: REQUIRED INT32 R:0 D:0
name: REQUIRED BINARY R:0 D:0
comment: REQUIRED BINARY R:0 D:0
row group 1: RC:5 TS:712 OFFSET:4
-------------------------------------------------------------------------------------------------------------------
region_key: INT32 UNCOMPRESSED DO:0 FPO:4 SZ:43/43/1.00 VC:5 ENC:DELTA_BINARY_PACKED,BIT_PACKED
name: BINARY UNCOMPRESSED DO:0 FPO:47 SZ:120/120/1.00 VC:5 ENC:DELTA_BYTE_ARRAY,BIT_PACKED
comment: BINARY UNCOMPRESSED DO:0 FPO:167 SZ:549/549/1.00 VC:5 ENC:DELTA_BYTE_ARRAY,BIT_PACKED
Любая помощь очень ценится!
Вот мой hive.properties
connector.name=hive-hadoop2
hive.metastore=file
hive.metastore.catalog.dir=file:///home/harper/presto/hive-catalog
hive.metastore.user=harper
hive.allow-drop-table=true
hive.parquet.use-column-names=true
Обновление 10/14
Я отладил сервер presto и нашел основную причину. Ошибка была выдана из ParquetPageSourceFactory.getParquetType
, где я обнаружил, что вместо чтения схемы региона Presto считал схему из таблицы lineitem.parquet
. Оказывается, когда я помещаю все таблицы tpch в один и тот же каталог, Presto не извлекает файл по имени таблицы, а предполагает, что все файлы в этой папке принадлежат одной и той же таблице.
Решение
Создайте отдельные папки для каждой таблицы и переместите файлы в другой каталог.