在AWS Athena中创建外部表时出错



我在AWS Athena中创建外部表时遇到以下错误:

line 1:8: no viable alternative at input 'create external' (service: amazonathena; status code: 400; error code: invalidrequestexception

我用来创建表的代码如下。它基于现有的雅典娜表。我使用SHOW CREATE来获取DDL代码。

CREATE EXTERNAL TABLE h_test(
test string
)
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '#' 
MAP KEYS TERMINATED BY 'undefined' 
WITH SERDEPROPERTIES ( 
'collection.delim'='undefined') 
STORED AS INPUTFORMAT 
'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
's3://cleverea-staging/test/'
TBLPROPERTIES (
'has_encrypted_data'='false')

我不确定从AWS Athena中的一个表中获取HiveQL DDL语句并重用它来创建另一个表是否是个好主意。有多个参数不是必需的,也不是专门应用于该表的。

在大多数情况下,不需要参数OUTPUTFORMATTBLPROPERTIES。例如,如果你的S3存储桶是默认模式加密的,或者使用KMS加密,你不需要提及它,AWS足够聪明,知道如何在需要时解密数据。

使用backtick(`(包装数据库、表和列名是一种很好的做法。

好例子:

CREATE EXTERNAL TABLE IF NOT EXISTS `mydb`.`mytable` (
`test` STRING,
`test2` STRING
)
ROW FORMAT SERDE 
'org.openx.data.jsonserde.JsonSerDe'
LOCATION
's3://awsexamplebucket1-logs/AWSLogs/'

还有一个很棒的在线生成器,您可以轻松地将任何JSON(甚至是复杂的嵌套JSON(、CSV、TSV或Log示例文件转换为Apache HiveQL DDL创建表语句。

链接:https://www.hivetablegenerator.com/

AWS官方参考:https://docs.aws.amazon.com/athena/latest/ug/create-table.html

相关内容

最新更新