问题 Hive AvroSerDe tblProperties 最大长度

Issue Hive AvroSerDe tblProperties max length

我尝试用 AvroSerDe 创建一个 table。 我已经尝试按照以下命令创建 table:

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');

创建似乎有效,但生成了以下table:

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',但是table仍然不起作用。

但是当我删除一些(随机)字段时,它起作用了(例如,使用以下定义)。

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

Hortonworks 支持团队确认,tblproperties 有 4000 个字符的限制。 因此,通过删除空格,您可以定义更大的 table。否则,您必须使用 'avro.schema.url'.