2015-10-13 61 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'。