La ruche ParseException - ne peut pas reconnaître d'entrée de près de 'fin' 'string'
J'obtiens l'erreur suivante lorsque vous essayez de créer un tableau de la Ruche à partir d'une table DynamoDB:
NoViableAltException(88@[])
at org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.identifier(HiveParser_IdentifiersParser.java:9123)
at org.apache.hadoop.hive.ql.parse.HiveParser.identifier(HiveParser.java:30750)
...more stack trace...
FAILED: ParseException line 1:77 cannot recognize input near 'end' 'string' ',' in column specification
La requête ressemble à ceci (simplifié pour protéger les innocents):
CREATE EXTERNAL TABLE moveProjects (cid string, end string, category string)
STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler'
TBLPROPERTIES ("dynamodb.table.name" = "Projects",
"dynamodb.column.mapping" = "cid:cid,end:end,category:category");
En gros, je suis en train de créer un tableau de la Ruche contenant le contenu de la Projects
table DynamoDB, mais l'instruction de création est en train de jeter une erreur d'analyse de la Ruche /Hadoop.
OriginalL'auteur Jens Roland | 2013-09-05
Vous devez vous connecter pour publier un commentaire.
La question n'est pas vraiment une erreur de syntaxe, la Ruche ParseException est causé par un mot clé réservé dans la Ruche (dans ce cas,
end
).La solution: utiliser des backticks autour de la délinquance nom de la colonne:
Avec l'ajout de backticks autour de
end
, la requête fonctionne comme prévu.Mots réservés dans Amazon de la Ruche (en date de février 2013):
Source: Cette Ruche de billet de Facebook Phabricator tracker
Je rencontre des problème similaire lors de l'utilisation de la colonne _1. changer pour un autre nom de résoudre le problème. Merci pour la réponse.
OriginalL'auteur Jens Roland
J'ai été en utilisant /Date=20161003 dans le chemin d'accès au dossier tout en faisant une insertion écraser et il n'était pas. Je l'ai changé de /Dt=20161003 et il a travaillé
OriginalL'auteur Sat
Vous pouvez toujours vous échapper le mot clé réservé si vous voulez faire de votre requête!!
Il suffit de remplacer fin avec "fin"
Voici la liste des mots réservés
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL
OriginalL'auteur naren