Hive/Athena:创建表时忽略字段

Posted

技术标签:

【中文标题】Hive/Athena:创建表时忽略字段【英文标题】:Hive/Athena : Ignore fields while creating table 【发布时间】: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"

【问题讨论】:

【参考方案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/'

【讨论】:

以上是关于Hive/Athena:创建表时忽略字段的主要内容,如果未能解决你的问题,请参考以下文章

在sql创建数据库表时,如何为字段设一个默认值

从 Amazon S3 创建表时,Athena 如何将数据与正确的字段匹配?

oracle与mysql创建表时的区别

MySQL创建表时,设置时间字段自动插入当前时间的两种格式

在数据库中动态创建表时,想要设两个字段都为关键字,怎么办?

mysql创建表时,报错:Row size too large.