J'essaye d'exécuter UDF dans Hive, qui devrait fondamentalement balayer à travers le fichier csv externe en utilisant la valeur de la table comme un autre argument. Recherche J'utilise:Hive ne peut pas trouver de fichier à partir du cache distribué sur EMR
add jar s3://bucket_name/udf/hiveudf.jar;
add FILE hdfs:///myfile/myfile.csv;
CREATE TEMPORARY FUNCTION MyFunc AS '....udf.myUDF';
SELECT mydate, record_id, value, MyFunc('myfile.csv',value) from my_table;
Les résultats sont instables et dans certains cas, exactement la même requête fonctionne très bien, mais dans environ 80% des cas, il retourne exception:
java.io.FileNotFoundException: myfile.csv (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at java.io.FileInputStream.<init>(FileInputStream.java:101)
at java.io.FileReader.<init>(FileReader.java:58)
...
fichier semble être ajouté au cache distribué:
hive> list files;
/mnt/tmp/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_resources/myfile.csv
Je l'ai essayé avec variou s versions de EMR ainsi que de divers types d'instances et n'a pas pu trouver un modèle ou ce qui déclenche ce problème. Tout conseil sera très apprécié.
Je suis également confronté au même problème sur EMR. Avez-vous pu le réparer? J'ai essayé les deux façons - MyUDF ("./ MyFile.txt") et MyUDF ("MyFile.txt"). J'ai ajouté une connexion pour imprimer le chemin du fichier à partir de UDF, Il essaie de trouver le fichier dans le répertoire "/ user/home". – Ajeet
Eh bien, en quelque sorte. Je courais mes travaux en copiant et collez le script Hive dans la fenêtre du terminal. Mon travail a été - exécuter même travail à partir d'une autre fenêtre de terminal et puis il fonctionne magiquement, encore peu clair pourquoi cela peut importer ... – Coppernick