2015-10-13 64 views
0

我尝试使用AvroSerDe创建表。 我已经尝试下面的命令来创建表:问题配置单元AvroSerDe tblProperties最大长度

CREATE EXTERNAL TABLE gaSession 
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://<<url>>:<<port>>/<<path>>/<<file>>.avsc'); 

创作似乎工作,但会产生如下表:

hive> show create table gaSession; 
OK 
CREATE EXTERNAL TABLE `gaSession`(
    `error_error_error_error_error_error_error` string COMMENT 'from deserializer', 
    `cannot_determine_schema` string COMMENT 'from deserializer', 
    `check` string COMMENT 'from deserializer', 
    `schema` string COMMENT 'from deserializer', 
    `url` string COMMENT 'from deserializer', 
    `and` string COMMENT 'from deserializer', 
    `literal` string COMMENT 'from deserializer') 
ROW FORMAT SERDE 
    'org.apache.hadoop.hive.serde2.avro.AvroSerDe' 
... 

之后,我复制的定义和更换“Avro公司。 schema.url'与'avro.schema.literal',但该表仍然无法正常工作。

但是,当我删除一些(随机)领域,它的作品(例如与follwoing定义)。

CREATE TABLE gaSession 
    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.literal'='{"type": "record", 
"name": "root", 
"fields": [ 
    { 
     "name": "visitorId", 
     "type": [ 
      "long", 
      "null" 
     ] 
    }, 
    { 
     "name": "visitNumber", 
     "type": [ 
      "long", 
      "null" 
     ] 
    }, 
    { 
     "name": "visitId", 
     "type": [ 
      "long", 
      "null" 
     ] 
    }, 
    { 
     "name": "visitStartTime", 
     "type": [ 
      "long", 
      "null" 
     ] 
    }, 
    { 
     "name": "date", 
     "type": [ 
      "string", 
      "null" 
     ] 
    }, 
    { 
     "name": "totals", 
     "type": [ 
      { 
       "type": "record", 
       "name": "totals", 
       "fields": [ 
        { 
         "name": "visits", 
         "type": [ 
          "long", 
          "null" 
         ] 
        }, 
        { 
         "name": "hits", 
         "type": [ 
          "long", 
          "null" 
         ] 
        }, 
        { 
         "name": "pageviews", 
         "type": [ 
          "long", 
          "null" 
         ] 
        }, 
        { 
         "name": "timeOnSite", 
         "type": [ 
          "long", 
          "null" 
         ] 
        }, 
        { 
         "name": "bounces", 
         "type": [ 
          "long", 
          "null" 
         ] 
        }, 
        { 
         "name": "transactions", 
         "type": [ 
          "long", 
          "null" 
         ] 
        }, 
        { 
         "name": "transactionRevenue", 
         "type": [ 
          "long", 
          "null" 
         ] 
        }, 
        { 
         "name": "newVisits", 
         "type": [ 
          "long", 
          "null" 
         ] 
        }, 
        { 
         "name": "screenviews", 
         "type": [ 
          "long", 
          "null" 
         ] 
        }, 
        { 
         "name": "uniqueScreenviews", 
         "type": [ 
          "long", 
          "null" 
         ] 
        }, 
        { 
         "name": "timeOnScreen", 
         "type": [ 
          "long", 
          "null" 
         ] 
        }, 
        { 
         "name": "totalTransactionRevenue", 
         "type": [ 
          "long", 
          "null" 
         ] 
        } 
       ] 
      }, 
      "null" 
     ] 
    } 
] 
}'); 

拥有TBLPROPERTIES/avro.schema.literal有一个最大长度或其他限制?

蜂房版本:0.14.0

回答

0

的Hortonworks支持团队证实,有对tblproperties 4000个字符的限制。 因此,通过删除空白区域,您可以定义一个更大的表格。否则,你必须使用'avro.schema.url'。