2016-08-08 3 views
1

Je suis en train de lire dans un fichier TSV dans un objet dataframe avec le code suivant:Databricks de contrôle étincelle csv pour le fichier vide

SQLContext sqlContext = new SQLContext(javaSparkContext); 
Map<String, String> sqlContextOptions = new HashMap<>(); 
sqlContextOptions.put("header", "true"); 
sqlContextOptions.put("delimiter", "\t"); 
DataFrame df = sqlContext.read() 
     .format("com.databricks.spark.csv") 
     .options(sqlContextOptions) 
     .load(path); 

En ce moment, le code renvoie une UnsupportedOperationException si elle rencontre un vide fichier. Je veux gérer des fichiers vides, mais je ne veux pas supposer que cette exception signifiera toujours un fichier vide. Quelle est la meilleure pratique pour vérifier si le fichier donné est vide?

Répondre

1

Je ne vois pas path explicitement défini, mais je suppose que c'est une chaîne contenant le chemin d'accès à un fichier. Si c'est le cas, vous pouvez l'ouvrir dans un objet BufferedReader et vérifier si vous pouvez en lire.

BufferedReader br = new BufferedReader(new FileReader(path));  
if (br.readLine() == null) { 
    // handle empty file... 
} else { 
    //do something... 
} 
+0

Donc, vous devez d'abord vérifier le fichier manuellement? C'est une honte. Il semble que quelque chose comme la vérification de fichier vide aurait dû être intégré. – alexgbelov

+0

Oui, je ne connais pas d'autre moyen. J'ai vérifié les nouvelles fonctions dans Java 8 mais il n'y a rien (pour autant que je suis tombé sur) qui vérifie automatiquement. –