Je suis relativement nouveau le processus de Socooping pardon toute ignorance. J'ai essayé de faire une boucle sur une table à partir d'une source de données en tant que fichier parquet et de créer une table d'impala (également en parquet) dans laquelle j'insérerai les données du pavé. Le code fonctionne sans problème, mais lorsque je tente de sélectionner une des lignes de couple pour le test je reçois l'erreur:sqoop créer impala parquet table
.../EWT_CALL_PROF_DIM_SQOOP/ec2fe2b0-c9fa-4ef9-91f8-46cf0e12e272.parquet' has an incompatible Parquet schema for column 'dru_id.test_ewt_call_prof_dim_parquet.call_prof_sk_id'. Column type: INT, Parquet schema: optional byte_array CALL_PROF_SK_ID [i:0 d:1 r:0]
j'étais le processus que je reflète sans trouvé sur un guide de Cloudera ici: https://www.cloudera.com/documentation/enterprise/5-8-x/topics/impala_create_table.html. Principalement la section "Tables internes et externes". J'ai essayé d'éviter d'avoir à inférer le schéma avec un fichier parquet particulier, puisque tout cela sera lancé tous les mois avec un script bash (et je ne peux pas non plus trouver un moyen de le pointer vers un seul fichier si j'utilise plus d'un mappeur).
Voici le code que j'ai utilisé. J'ai l'impression que je manque quelque chose de petit et de stupide, ou que j'ai tout gâché sans m'en rendre compte. Toute aide a été appréciée. Merci!
sqoop import -Doraoop.import.hint=" " \
--options-file /home/kemri/pass.txt \
--verbose \
--connect jdbc:oracle:thin:@ldap://oid:389/cn=OracleContext,dc=[employer],dc=com/EWSOP000 \
--username [userid] \
--num-mappers 1 \
--target-dir hdfs://nameservice1/data/res/warehouse/finance/[dru_userid]/EWT_CALL_PROF_DIM_SQOOP \
--delete-target-dir \
--table DMPROD.EWT_CALL_PROF_DIM \
--direct \
--null-string '\\N' \
--null-non-string '\\N' \
--as-parquetfile
impala-shell -k -i hrtimpslb.[employer].com
create external table test_EWT_CALL_PROF_DIM_parquet(
CALL_PROF_SK_ID INT,
SRC_SKL_CD_ID STRING,
SPLIT_NM STRING,
SPLIT_DESC STRING,
CLM_SYS_CD STRING,
CLM_SYS_NM STRING,
LOB_CD STRING,
LOB_NM STRING,
CAT_IND STRING,
CALL_TY_CD STRING,
CALL_TY_NM STRING,
CALL_DIR_CD STRING,
CALL_DIR_NM STRING,
LANG_CD STRING,
LANG_NM STRING,
K71_ATOMIC_TS TIMESTAMP)
stored as parquet location '/data/res/warehouse/finance/[dru_userid]/EWT_CALL_PROF_DIM_SQOOP';
Vous pouvez également utiliser l'option '--hive-import' qui crée immédiatement des tables de ruche avec des fichiers parquet sous-jacents sans que vous ayez à vous inquiéter. Impala utilise le même métastore de table donc pas de problème. – spijs
@spijs merci pour cette suggestion! Est-ce que cela existerait automatiquement dans Impala une seule fois ou devrais-je aller dans Hue> Impala et rafraîchir le métastore? N'importe quelle quantité d'étapes manuelles est un échec puisque nous créons cela pour les partenaires commerciaux. – kemri
Vous auriez en effet besoin d'actualiser le méta-store. Vous aurez également besoin du nom de table pour créer la table afin d'ajouter une commande impala à votre script est probablement moins de travail que par exemple définir toutes vos colonnes ce qui n'est pas nécessaire avec - -hive-import – spijs