空值未写入“org.zuinnote.spark.office.excel”包
Posted
技术标签:
【中文标题】空值未写入“org.zuinnote.spark.office.excel”包【英文标题】:Null values are not writing in "org.zuinnote.spark.office.excel" package 【发布时间】:2017-07-03 08:13:14 【问题描述】: 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 格式执行此操作?
【问题讨论】:
你能展示一下Dataset的架构和数据吗? 我正在从 NEWFILE.xlsx 文件加载数据,其中特定列中的某些数据包含空值。在这种情况下,如果记录不包含任何它成功写入 excel 的空值,我只手动测试了 3 条记录。但是如果有空值,我会得到上述异常。 @abaghe 为什么使用“com.crealytics.spark.excel”进行阅读而使用“org.zuinnote.spark.office.excel”进行写作?您可以使用“org.zuinnote.spark.office.excel”进行阅读和写作。 @abaghel 我从 org.zuinnote.spark.office.excel 得到的输出在下面,不能用于匹配或连接列 +----------- -------------------------------------------------- ---------------------+ |行 | +-------------------------------------------------- ---------------------------------+ |[[col1,,,A1,Sheet1], [col2,, ,B1,Sheet1], [col3,,,C1,Sheet1]] | |[[21200490545,,,A2,Sheet1], [5.4756786... 两个库返回的数据集架构不同。在编写之前,您必须创建数据集以确认“org.zuinnote.spark.office.excel”支持的架构,并且您可能需要用空字符串替换行或列中的任何空值。 【参考方案1】:请检查 HadoopOffice 的版本(当前为 1.0.4),尤其是 DS (https://github.com/ZuInnoTe/spark-hadoopoffice-ds)。另外,有些参数不存在,请查看文档。 在 Github 上直接使用项目创建问题以解决这些问题也更快。
【讨论】:
【参考方案2】:.na().fill(" "); .show(false);
此代码解决空值问题。在之前版本的“org.zuinnote.spark.office.excel”包中
【讨论】:
以上是关于空值未写入“org.zuinnote.spark.office.excel”包的主要内容,如果未能解决你的问题,请参考以下文章