2017-07-03 28 views
1
Dataset<Row> SourcePropertSet = sqlContext.read() 
      .format("com.crealytics.spark.excel") 
      .option("location", "E:\\XLS\\NEWFILE.xlsx") 
      .option("useHeader", "false") 
      .option("treatEmptyValuesAsNulls", "true") 
      .option("inferSchema", "true") 
      .option("addColorColumns", "false") 
      .load(); 


SourcePropertSet = SourcePropertSet.repartition(1).select("*") 
.write().option("treatEmptyValuesAsNulls", "true") 
.format("org.zuinnote.spark.office.excel") 
.mode(SaveMode.Overwrite) 
.save("E:\\XLS\\NEWFILE1.xlsx"); 

对于上面的代码,在写入xslx格式时,还有其他选项可以考虑空值。
我得到scala.MatchError:null异常引发,如果特定列包含任何空值。

要解决的可能解决方案是通过放置正确的逻辑代码或寻找.options或是否有任何其他包以.xslx格式执行此操作?空值不写在“org.zuinnote.spark.office.excel”包中

+0

你能展示数据集的模式和数据吗? – abaghel

+0

我正在从NEWFILE.xlsx文件中加载数据,其中特定列中的某些数据包含空值。在这种情况下,如果记录不包含任何成功写入excel的空值,那么我只手动测试了3条记录。但是,如果有空值,我会得到上述例外。 @abaghe –

+0

为什么使用“com.crealytics.spark.excel”阅读和“org.zuinnote.spark.office.excel”写作?您可以使用“org.zuinnote.spark.office.excel”进行阅读和写作。 – abaghel

回答

0
.na().fill(" "); .show(false); 

此代码可解决空值问题。在以前版本的“org.zuinnote.spark.office.excel”包中

1

请检查HadoopOffice的版本(目前是1.0.4),特别是DS(https://github.com/ZuInnoTe/spark-hadoopoffice-ds)。另外,一些参数不存在,所以请检查文档。 直接用Github上的项目创建一个问题来解决这些问题也更快。