Первая проблема в вашем DDL состоит в том, что разделенный столбец не должен быть указан в столбцах spe c, только в partitioned by
. Раздел - это папка с именем partition_column=value
, и этот столбец хранится не в файлах таблиц, а только в каталоге разделов. Если вы хотите, чтобы столбец раздела находился в файлах данных, он должен иметь другое имя.
Вторая проблема заключается в том, что SERDEPROPERTIES является частью спецификации SERDE. Если вы не укажете SERDE, он не должно быть никаких сердечников. См. Это руководство: StorageFormat andSerDe
Фиксированный DDL:
CREATE TABLE factual_player (number_goals INT)
PARTITIONED BY (player_name STRING)
STORED AS PARQUET
LOCATION 'hdfs://nameservice1/factual_player';
STORED AS PARQUET
уже подразумевает SERDE
, INPUTFORMAT
и OUPPUTFORMAT
.
Если вы хотите указать SERDE с его свойствами, используйте этот синтаксис:
CREATE TABLE factual_player(number_goals int)
PARTITIONED BY (player_name string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
WITH SERDEPROPERTIES ('serialization.format'='1') --I believe you really do not need this
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION 'hdfs://nameservice1/factual_player'