spark-shell将DataFrame结果输出为Excel
时间: 2024-05-16 22:14:15 浏览: 100
要将DataFrame结果输出为Excel,可以使用Apache POI库来生成Excel文件。以下是一个示例代码片段:
```scala
import java.io.FileOutputStream
import org.apache.poi.ss.usermodel.{Cell, Row}
import org.apache.poi.xssf.usermodel.{XSSFCell, XSSFRow, XSSFWorkbook}
import org.apache.spark.sql.DataFrame
// 将DataFrame结果转换为List[List[String]]
def dfToList(df: DataFrame): List[List[String]] = {
df.collect().map(row => row.toSeq.map(value => if (value == null) "" else value.toString).toList).toList
}
// 创建Excel文件并写入数据
def writeExcel(data: List[List[String]], outputPath: String): Unit = {
val workbook = new XSSFWorkbook()
val sheet = workbook.createSheet("Sheet1")
for ((rowValues, rowIndex) <- data.zipWithIndex) {
val row: Row = sheet.createRow(rowIndex)
for ((value, columnIndex) <- rowValues.zipWithIndex) {
val cell: Cell = row.createCell(columnIndex)
cell.setCellValue(value)
}
}
val fileOut = new FileOutputStream(outputPath)
workbook.write(fileOut)
fileOut.close()
}
// 加载DataFrame并将结果写入Excel文件
val df = spark.read.format("csv").option("header","true").load("data.csv")
val data = dfToList(df)
writeExcel(data, "output.xlsx")
```
在该示例中,我们首先定义了`dfToList`函数,该函数将DataFrame转换为`List[List[String]]`格式。然后,我们定义了`writeExcel`函数,该函数使用Apache POI来创建Excel文件并写入数据。最后,我们加载DataFrame并将结果写入Excel文件。
请注意,我们在示例中使用了CSV格式的数据文件,因此我们使用了`csv`格式的Spark Reader来加载数据。如果您的数据不是CSV格式,则需要使用适当的Spark Reader来加载数据。
阅读全文