Athena:在从 Json 数据创建 table 时重命名列
Athena: Rename columns while creating table from Json data
json 数据(在 S3 中)中的某些键包含特殊字符 (+)。所以我想在 Athena 中创建 table 时重命名这些字段。我找到了 this 文档,其中讨论了 ColumnToJsonKeyMappings
我尝试使用它,但我重命名的字段没有填充任何数据。
这是我尝试过的示例 DDL:
CREATE EXTERNAL TABLE `table_name`(
`st` string COMMENT 'from deserializer',
`eid` string COMMENT 'from deserializer',
`cid_sid_et` string COMMENT 'from deserializer',
`v` string COMMENT 'from deserializer')
ROW FORMAT SERDE
'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (
'paths'='cid+sid+et,eid,st,v',
'ignore.malformed.json'='true',
'ColumnToJsonKeyMappings'='{"cid_sid_et":"cid+sid+et"}')
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
's3://location-of-data'
TBLPROPERTIES (
'classification'='json')
这通过使用以下格式起作用:
CREATE EXTERNAL TABLE `table_name`(
`st` string COMMENT 'from deserializer',
`eid` string COMMENT 'from deserializer',
`cid_sid_et` string COMMENT 'from deserializer',
`v` string COMMENT 'from deserializer')
ROW FORMAT SERDE
'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (
'paths'='cid_sid_et,eid,st,v',
'ignore.malformed.json'='true',
'mapping.cid_sid_et'='cid+sid+et')
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
's3://location-of-data'
TBLPROPERTIES (
'classification'='json')
json 数据(在 S3 中)中的某些键包含特殊字符 (+)。所以我想在 Athena 中创建 table 时重命名这些字段。我找到了 this 文档,其中讨论了 ColumnToJsonKeyMappings
我尝试使用它,但我重命名的字段没有填充任何数据。
这是我尝试过的示例 DDL:
CREATE EXTERNAL TABLE `table_name`(
`st` string COMMENT 'from deserializer',
`eid` string COMMENT 'from deserializer',
`cid_sid_et` string COMMENT 'from deserializer',
`v` string COMMENT 'from deserializer')
ROW FORMAT SERDE
'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (
'paths'='cid+sid+et,eid,st,v',
'ignore.malformed.json'='true',
'ColumnToJsonKeyMappings'='{"cid_sid_et":"cid+sid+et"}')
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
's3://location-of-data'
TBLPROPERTIES (
'classification'='json')
这通过使用以下格式起作用:
CREATE EXTERNAL TABLE `table_name`(
`st` string COMMENT 'from deserializer',
`eid` string COMMENT 'from deserializer',
`cid_sid_et` string COMMENT 'from deserializer',
`v` string COMMENT 'from deserializer')
ROW FORMAT SERDE
'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (
'paths'='cid_sid_et,eid,st,v',
'ignore.malformed.json'='true',
'mapping.cid_sid_et'='cid+sid+et')
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
's3://location-of-data'
TBLPROPERTIES (
'classification'='json')