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:创建表时忽略字段的主要内容,如果未能解决你的问题,请参考以下文章