web-dev-qa-db-fra.com

Hive error: parseexception manquant EOF

Je ne suis pas sûr de ce que je fais mal ici:

Hive> CREATE TABLE default.testtbl(int1 INT,string1 STRING)  
      stored as orc 
      tblproperties ("orc.compress"="NONE") 
      LOCATION "/user/Hive/test_table";

      FAILED: ParseException line 1:107 missing EOF at 'LOCATION' near ')'

alors que la requête suivante fonctionne parfaitement bien:

Hive>  CREATE TABLE default.testtbl(int1 INT,string1 STRING)  
       stored as orc 
       tblproperties ("orc.compress"="NONE");
       OK
       Time taken: 0.106 seconds

Est-ce que j'ai râté quelque chose. Tous les pointeurs aideront. Merci!

9
lex

Essayez de mettre le "LOCATION" devant "tblproperties" comme ci-dessous, a travaillé pour moi.

CREATE TABLE default.testtbl(int1 INT,string1 STRING)  
  stored as orc 
  LOCATION "/user/Hive/test_table"
  tblproperties ("orc.compress"="NONE");

Il semble même que l'exemple SQL du livre "Programming Hive" se soit trompé. Veuillez vous reporter à la définition officielle de la commande create table:

https://cwiki.Apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-CreateTable

12
Haiying Wang

@ Haiying Wang a fait remarquer que LOCATION doit être placé devant tblproperties.

Mais je pense que l'erreur se produit également lorsque location est spécifié ci-dessus stored as.

Il est préférable de respecter le bon ordre:

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name    -- (Note: TEMPORARY available in Hive 0.14.0 and later)
  [(col_name data_type [COMMENT col_comment], ... [constraint_specification])]
  [COMMENT table_comment]
  [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
  [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
  [SKEWED BY (col_name, col_name, ...)                  -- (Note: Available in Hive 0.10.0 and later)]
     ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)
     [STORED AS DIRECTORIES]
  [
   [ROW FORMAT row_format] 
   [STORED AS file_format]
     | STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]  -- (Note: Available in Hive 0.6.0 and later)
  ]
  [LOCATION hdfs_path]
  [TBLPROPERTIES (property_name=property_value, ...)]   -- (Note: Available in Hive 0.6.0 and later)
  [AS select_statement];   -- (Note: Available in Hive 0.5.0 and later; not supported for external tables)

Référez-vous à: Hive Create Table

1
Ani Menon

ParseException line lineNumber manquant EOF à '.' près de 'schemaName':

Vous avez obtenu l'erreur ci-dessus en essayant d'exécuter la commande suivante à partir d'un script linux pour tronquer une table Hive

dse -u nom_utilisateur -p mot_de_passe Hive -e "truncate table keyspace.tablename;"

Correction: Nécessité de séparer les commandes dans la ligne de script comme suit -

dse -u nom d'utilisateur -p mot_de_passe Hive -e "utiliser l'espace-clés; tronquer la table espace-tables.nom_table" 

Bonne codage!

Vérifiez ce post: 

Chargement de données d'un fichier .txt vers une table stockée sous ORC dans Hive

Et vérifiez vos fichiers source présents dans le répertoire spécifié /user/Hive/test_table. Si les fichiers sont au format .txt ou dans un autre format non ORC, vous pouvez suivre les étapes décrites ci-dessus pour éviter l'erreur.

0
Neels

Vous avez la même erreur lors de la création d'une table dans Hive.

J'ai utilisé la commande drop pour supprimer la table, puis exécuter la commande create table que j'avais à nouveau.

Travaillé pour moi.

0
Cyrus