2017-04-20 1 views
1

J'essaye de charger des données d'Oracle à Hive en tant que parquet. Chaque fois que je charge une table avec la colonne date/timestamp pour la ruche, elle convertit automatiquement ces colonnes en BIGINT. Est-il possible de charger des formats d'horodatage/date à hive en utilisant sqoop et en tant que fichier parquet?TIMESTAMP sur la table HIVE

Déjà essayé de créer la table d'abord dans la ruche puis en utilisant impala pour CHARGER LES DONNÉES ENTRER le fichier parquet.
toujours pas avec des erreurs

"fichier XX a un schéma de Parquet incompatible pour la colonne XX Colonne: TIMESTAMP"

BTW, j'utilise Cloudera QuickStart vm. Merci

Répondre

2

De l'Cloudera documentation:

Si vous utilisez Sqoop pour convertir les données de SGBDR à parquet, faire attention à l'interprétation des valeurs résultant de DATE, DATETIME ou colonnes TIMESTAMP . Les valeurs sous-jacentes sont représentées par le type Parquet INT64, représenté par BIGINT dans la table Impala. Les valeurs de Parquet représentent le temps en millisecondes, tandis que Impala interprète BIGINT comme le temps en secondes. Par conséquent, si vous avez une colonne BIGINT dans une table Parquet qui a été importée de cette manière à partir de Sqoop, divisez les valeurs par 1000 lors de l'interprétation en tant que type TIMESTAMP.

Ou vous pouvez également utiliser votre requête Hive comme ceci pour obtenir le résultat dans votre format TIMESTAMP désiré.

FROM_UNIXTIME(CAST(SUBSTR(timestamp_column, 1,10) AS INT)) AS timestamp_column; 
+0

Merci, il semble que je ne peux pas importer les formats date/timestamp à partir du parquet. – askdk

+0

Ce problème est avec le fichier de parquet en ce moment. Vous pouvez utiliser le format ORC pour importer en horodatage avec l'option '--map-column-hive = TIMESTAMP'. Le format de fichier ORC a de meilleures performances que le parquet. –

+0

@SandeepSingh l'importation de prise en charge de l'importation sqoop au format ORC directement? Je pense que nous devons d'abord importer dans le texte, puis créer la table Hive pour stocker au format ORC? –

0

Essayez d'utiliser la configuration de Sqoop

--map-column-hive 
<cols_name>=TIMESTAMP 
+0

déjà essayé, mais il semble que Sqoop ignore cette configuration une fois que nous utilisons --as-parquetfile options – askdk

+0

Je ne peux pas trouver une option comme "--as-parquetfile" Seulement 3 Type: '- -as-avrodatafile \t données Importe Avro fichiers de données --as-sequencefile \t données Importations à SequenceFiles --as-textFile \t Importe des données sous forme de texte (par défaut) ' https://sqoop.apache.org/ docs/1.4.1-incubation/SqoopUserGuide.html –

+0

Essayez celui-ci: https://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_microsoft_sql_connector – askdk