Uploaded image for project: 'Hive'
  1. Hive
  2. HIVE-18632

TYPE CASTING ERROR: CONVERTING FORM INT TO STRING

    Details

    • Type: Bug
    • Status: Open
    • Priority: Critical
    • Resolution: Unresolved
    • Affects Version/s: 1.1.0
    • Fix Version/s: None
    • Component/s: Clients, Database/Schema
    • Labels:

      Description

      HI,

      AVRO source file field data type have int but we want to load the data using the string,

      we have created the AVSC schema for that field has string.

      getting error while doing the select * from table name;

      1 >> Created a table in Hive with AVRO data.
      CREATE EXTERNAL TABLE tweets (username string, tweet string, timestamp bigint)
      COMMENT 'A table backed by Avro data with the Avro schema stored in HDFS'
      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'
      LOCATION '/home/neha/test_data/avro_create_data'
      TBLPROPERTIES ('avro.schema.literal'='{"namespace":"com.miguno.avro","name":"Tweet","type":"record","fields":[

      {"name" : "username","type" : "string","doc" : "Name of the user account on Twitter.com"}

      ,

      {"name" : "tweet","type":"string","doc" : "The content of the Twitter message"}

      ,

      {"name" : "timestamp", "type" : "long", "doc" : "Unix epoch time in seconds"}

      ]}');

      2 >> Altered type of a column (to a compatible type) using ALTER TABLE. In this example, altered type for column "timestamp" from "long" to "int".

      ALTER TABLE tweets SET TBLPROPERTIES ('avro.schema.literal'='{"namespace":"com.miguno.avro","name":"Tweet","type":"record","fields":[

      {"name" : "username","type" : "string","doc" : "Name of the user account on Twitter.com"}

      ,

      {"name" : "tweet","type":"string","doc" : "The content of the Twitter message"}

      ,

      {"name" : "timestamp", "type" : "int", "doc" : "Unix epoch time in seconds"}

      ]}');

      3 >> Now, a select query on this table fails with following error.

      hive> select * from tweets;
      OK
      Failed with exception java.io.IOException:org.apache.avro.AvroTypeException: Found "long", expecting "int"
      Time taken: 4.514 seconds

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              shiva_009 shiva
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Due:
                Created:
                Updated: