web-dev-qa-db-fra.com

comment puis-je supprimer des fichiers dans le répertoire hdfs après l'avoir lu avec l'aide de scala

J'utilise fileStream pour lire les fichiers dans le répertoire hdfs de Spark (contexte de diffusion). Au cas où mon étincelle s'éteindrait et commencerait après un certain temps, j'aimerais lire les nouveaux fichiers du répertoire. Je ne veux pas lire d'anciens fichiers dans le répertoire déjà lu et traité par Spark. J'essaie d'éviter les doublons ici.

val lines = ssc.fileStream[LongWritable, Text, TextInputFormat]("/home/File")

des extraits de code pour aider?

7
user1125829

Vous pouvez utiliser l'API FileSystem. Ci-dessous sont les commandes.

import org.Apache.hadoop.fs.FileSystem
import org.Apache.hadoop.fs.Path
val fs=FileSystem.get(sc.hadoopConfiguration)
val outPutPath="/abc"
if(fs.exists(new Path(outPutPath)))
  fs.delete(new Path(outPutPath),true)
13
Ishan Kumar

fileStream gère déjà cela pour vous - depuis son Scaladoc :

Créez un flux d'entrée qui surveille un système de fichiers compatible Hadoop à la recherche de nouveaux fichiers et les lit à l'aide des types clé-valeur et du format d'entrée donnés.

Cela signifie que fileStream ne chargerait que nouveaux fichiers (créés après le démarrage du contexte de diffusion), tous les fichiers existant déjà dans le dossier avant le démarrage de votre application de diffusion seraient ignorés. 

1
Tzach Zohar