【问题标题】:Hive/Athena : Ignore fields while creating tableHive/Athena:创建表时忽略字段
【发布时间】:2020-06-04 03:32:10
【问题描述】:

我必须将 json 格式的数据加载到 hive。下面是 JSON 格式的示例数据。我需要在“test”数据库中创建一个表“emp”,其中包含 empno、name、salary 和更新的列。请就如何编写一个从这些列中接受数据的创建表语句提出建议。

{“schema”:“test”,“table”:“emp”,“type”:“WriteRowsEvent”,“row”:{“values”:{“empno”:20,“name”:“Ram ", "salary": 20000.0, "updated": "2020-05-21T21:47:01"}}}{"schema": "test", "table": "emp", "type": "WriteRowsEvent" , "row": {"values": {"empno": 30, "name": "Dev", "salary": 30000.0, "updated": "2020-05-21T21:47:26"}}}

【问题讨论】:

    标签: json hiveql amazon-athena


    【解决方案1】:

    考虑您的 JSON 文件格式如下:

    {"schema": "test", "table": "emp", "type": "WriteRowsEvent", "row": {"values": {"empno": 20, "name": "Ram", "salary": 20000.0, "updated": "2020-05-21T21:47:01"}}}
    

    我能够使用这个生成器生成表语句:https://www.hivetablegenerator.com/

    HiveQL 创建表语句:

    CREATE EXTERNAL TABLE IF NOT EXISTS `mydb`.`mytable` (
        `schema` STRING,
        `table` STRING,
        `type` STRING,
        `row` STRUCT<
        `values`:STRUCT<
        `empno`:INT,
    `name`:STRING,
    `salary`:DOUBLE,
    `updated`:STRING>>)
    ROW FORMAT SERDE 
         'org.openx.data.jsonserde.JsonSerDe'
    LOCATION
         's3://awsexamplebucket1-logs/AWSLogs/'
    

    【讨论】:

      猜你喜欢
      • 2019-08-19
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多