СБОЙ: ParseException строка 4: 0 не может распознать ввод около ')' 'COMMENT' '' V1.0 '' в спецификации столбца - PullRequest
0 голосов
/ 01 мая 2018

Я видел много вопросов, которые имеют такую ​​ошибку в SO, и я пробовал их предлагаемые решения, но ни один из них не работал.

Вот мой сценарий:

CREATE TABLE default.my_table(

)COMMENT 'V1.0' 
row format delimited fields terminated BY '\t' lines terminated BY '\n';

У меня есть другие сценарии, у которых нет столбцов, но они выполняются нормально, но почему-то этот сценарий вызывает ошибку при выполнении. Любая помощь приветствуется. Заранее спасибо.

1 Ответ

0 голосов
/ 01 мая 2018

В таблице Hive должен быть хотя бы один столбец. Список столбцов может быть указан явно или предоставлен через внешнюю схему.

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

Этот подход иллюстрируется форматом Avro

Пример файла схемы (my_table.avsc)

{
  "type" : "record",
  "name" : "dummy_record",
  "namespace" : "so",
  "doc" : "Test schema",
  "fields" : [ {
    "name" : "column1",
    "type" : [ "null", "string" ],
    "default" : null
  },
  {
    "name" : "column2",
    "type" : [ "null", "string" ],
    "default" : null
  }]
}

Загрузить файл схемы в HDFS

hadoop fs -mkdir /avsc-schemas
hadoop fs -put my_table.avsc /avsc-schemas

Создание таблицы Hive (столбцы не нужно указывать в операторе создания)

CREATE TABLE default.my_table
COMMENT 'V1.0' 
ROW FORMAT SERDE
  'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
  STORED AS INPUTFORMAT
  'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
  OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
  TBLPROPERTIES (
    'avro.schema.url'='hdfs:///avsc-schemas/my_table.avsc');

Проверьте таблицу улья. У него два столбца, хотя ни один из них не был указан в операторе create.

desc default.my_table;
col_name    data_type   comment
column1     string
column2     string
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...