2017-10-18 20 views
1

Ma première tentative a été:Est-il possible de créer une table ruche avec le format de sortie de texte?

CREATE TABLE t1 ( 
    a string)  
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ',' 
STORED AS TEXTFILE ; 

Mais le résultat de cette est:

CREATE TABLE t1 ( 
    a string)            
ROW FORMAT DELIMITED            
    FIELDS TERMINATED BY ','          
STORED AS INPUTFORMAT           
    'org.apache.hadoop.mapred.TextInputFormat'      
OUTPUTFORMAT              
    'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' ; 

qui semble être le résultat dans un fichier binaire et non un fichier texte.

I insérer des données dans t1:

insert into t1 values ("hello"); 
INFO : Loading data to t1 
INFO : Table t1 stats: [numFiles=1, numRows=1, totalSize=14, rawDataSize=5] 
No rows affected (86.403 seconds) 

Le fichier HDFS qui en résulte est:

14 2017-10-18 17:20 t1/000000_0.deflate 

et le contenu sont binaires. Ce dont j'ai réellement besoin, c'est d'un fichier texte.

Alors, est-il possible d'obtenir un format de sortie de HDFS qui est un texte?

BTW, je me sers d'une Hortonworks grande distribution de données. HDP 2.5.0.

$ hdp-select | grep hive 
hive-metastore - 2.5.0.0-1245 
hive-server2 - 2.5.0.0-1245 
hive-server2-hive2 - 2.5.0.0-1245 
hive-webhcat - 2.5.0.0-1245 

Répondre

2

zlib/deflate format de compression - C'est le format de compression de données par défaut. L'extension de fichier de ce format de compression est .deflate. La configuration suivante est utilisée pour définir ce format:

SET hive.exec.compress.output=true; 
SET mapred.output.compression.codec=org.apache.hadoop.io.compress.DefaultCodec; 

Pour arrêt l'utilisation de la compression ceci:

SET hive.exec.compress.output=false; 

Et au lieu de spécifier INPUTFORMAT, OUTPUTFORMAT vous pouvez tout simplement écrire STORED AS TEXTFILE Voir cette réponse : https://stackoverflow.com/a/44454578/2700344