как реализовать псевдоним avro

Я новичок в avro, и при попытке использовать свойство alias avro я получаю ошибку ниже.

Запрос: select department_id , office_name from test.depart_alias;

SemanticException [Ошибка 10004]: строка 1:23 Недопустимый псевдоним таблицы или ссылка на столбец office_name: (возможные имена столбцов: Department_id, Department_name)

Мой файл json для формата avsc

{
  "type" : "record",
  "name" : "departments",
  "doc" : "Sqoop import of departments",
  "fields" : [ {
    "name" : "department_id",
    "type" : [ "null", "int" ],
    "default" : null,
    "columnName" : "department_id",
    "sqlType" : "4"
  }, {
    "name" : "department_name",
    "type" : [ "null", "string" ],
    "default" : null,
    "aliases" : [ "office_name" ],
    "columnName" : "department_name",
    "sqlType" : "12"
  } ],
  "tableName" : "departments"

Я хочу использовать название офиса в качестве псевдонима для Department_name. Как мне это реализовать

Спасибо


person Anaadih.pradeep    schedule 26.01.2017    source источник


Ответы (1)


если ваше старое поле столбца называется имя_отдела, ваша схема должна выглядеть так

{
  "type" : "record",
  "name" : "departments",
  "doc" : "Sqoop import of departments",
  "fields" : [ {
    "name" : "department_id",
    "type" : [ "null", "int" ],
    "default" : null,
    "columnName" : "department_id",
    "sqlType" : "4"
  }, {
    "name" : "office_name",
    "type" : [ "null", "string" ],
    "default" : null,
    "aliases" : [ "department_name" ], <- old columns here
    "columnName" : "department_name",
    "sqlType" : "12"
  } ],
  "tableName" : "departments"

Старые имена столбцов или «псевдонимы» должны входить в массив псевдонимов.

person hlagos    schedule 26.01.2017
comment
Спасибо @lake, это сработало. Есть ли у вас какой-либо ресурс, где я могу узнать больше об эволюции схемы на примере, поделитесь, пожалуйста :) - person Anaadih.pradeep; 26.01.2017
comment
это подходящее место для начала :) avro.apache.org/docs /1.8.1/spec.html#schema_complex - person hlagos; 26.01.2017