2016-08-08 117 views
1

我想在一个TSV文件中读取与下面的代码数据帧对象火花CSV检查:Databricks为空文件

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); 

眼下,代码抛出UnsupportedOperationException如果遇到空文件。我想处理空文件,但我不想假定这个异常总是意味着一个空文件。检查给定文件是否为空的最佳做法是什么?

回答

1

我没有看到path明确定义,但我假设它是一个字符串包含文件的路径。如果是这种情况,您可以在BufferedReader对象中打开它,并检查是否可以读取它。

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

所以,你必须先手动检查文件?这太遗憾了。它感觉像是空文件检查应该已经内置。 – alexgbelov

+0

是的,我不知道任何其他方式。我在Java 8中检查了更新的函数,但没有任何东西(只要我碰到)会自动检查。 –