2017-07-17 2 views

Répondre

1

Vous pouvez obtenir le dernier fichier modifié à partir du répertoire et le transmettre à sc.textFile() lire dans étincelle.

Voici comment vous pouvez obtenir le dernier fichier modifié

val directory = new File("/home/sathya/location/") 
val allFiles = directory.listFiles 
    .filter(_.isFile) 
    .sortBy(-_.lastModified()) 
    .toList 

val latestFile = allFiles(0) 

Ici, le latestFile est le dernier fichier modifié maintenant, vous pouvez lire le dernier fichier en étincelle

sc.textFile(latestFile) 

Hope this helps!

+0

Si cela répond à votre question, vous pouvez accepter comme une réponse et fermer le sujet. qui sera également utile pour les autres –

+0

Son fonctionnement, merci – sathiyarajan

+0

Merci d'avoir accepté comme réponse :) –

0

Il n'y a pas de solution prête à l'emploi pour votre problème, d'abord vous trouvez le dernier fichier puis le chargez.

Java Exemple:

/** 
* Function to get latest file in directory 
*/ 
public static String latestFileInDir(String dir) throws IOException, InterruptedException { 

    //Replace hadoop home 
    String command = "<HADOOP_HOME>/bin/hadoop fs -ls -R " + dir + " | awk -F\" \" '{print $6\" \"$7\" \"$8}' | sort -nr | head -1"; 

    ProcessBuilder pb = new ProcessBuilder("/bin/sh", "-c", command); 
    String op = null; 
    Process process = pb.start(); 
    int errCode = process.waitFor(); 
    if (errCode == 0) { 
     BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream())); 
     op = br.readLine(); 
    } 

    return op; 
} 

Obtenez le dernier répertoire et la charge

rdd= sc.textfile(latestFileInDir("/home/sathya/location/"));