Siéntete en la libertad de compartir nuestra página y códigos con tus amigos, danos de tu ayuda para hacer crecer esta comunidad.
Solución:
La solución a su problema es usar Spark Excel
dependencia en su proyecto.
Spark Excel tiene flexibilidad options
jugar con.
He probado el siguiente código para leer de excel
y convertirlo a dataframe
y simplemente funciona perfecto
def readExcel(file: String): DataFrame = sqlContext.read
.format("com.crealytics.spark.excel")
.option("location", file)
.option("useHeader", "true")
.option("treatEmptyValuesAsNulls", "true")
.option("inferSchema", "true")
.option("addColorColumns", "False")
.load()
val data = readExcel("path to your excel file")
data.show(false)
puedes dar sheetname
como option
si su hoja de Excel tiene varias hojas
.option("sheetName", "Sheet2")
Espero que sea útil
Aquí están leer y escribe ejemplos para leer y escribir en excel con un conjunto completo de opciones...
Fuente chispa-excel de crealytics
Chispa API Scala 2.0+:
Crear un marco de datos a partir de un archivo de Excel
import org.apache.spark.sql._
val spark: SparkSession = ???
val df = spark.read
.format("com.crealytics.spark.excel")
.option("sheetName", "Daily") // Required
.option("useHeader", "true") // Required
.option("treatEmptyValuesAsNulls", "false") // Optional, default: true
.option("inferSchema", "false") // Optional, default: false
.option("addColorColumns", "true") // Optional, default: false
.option("startColumn", 0) // Optional, default: 0
.option("endColumn", 99) // Optional, default: Int.MaxValue
.option("timestampFormat", "MM-dd-yyyy HH:mm:ss") // Optional, default: yyyy-mm-dd hh:mm:ss[.fffffffff]
.option("maxRowsInMemory", 20) // Optional, default None. If set, uses a streaming reader which can help with big files
.option("excerptSize", 10) // Optional, default: 10. If set and if schema inferred, number of rows to infer schema from
.schema(myCustomSchema) // Optional, default: Either inferred schema, or all columns are Strings
.load("Worktime.xlsx")
Escribir un marco de datos en un archivo de Excel
df.write
.format("com.crealytics.spark.excel")
.option("sheetName", "Daily")
.option("useHeader", "true")
.option("dateFormat", "yy-mmm-d") // Optional, default: yy-m-d h:mm
.option("timestampFormat", "mm-dd-yyyy hh:mm:ss") // Optional, default: yyyy-mm-dd hh:mm:ss.000
.mode("overwrite")
.save("Worktime2.xlsx")
Nota: en lugar de hoja1 o hoja2, también puede usar sus nombres … en este ejemplo anterior A diario es el nombre de la hoja.
- Si quieres usarlo desde Spark Shell…
Este paquete se puede agregar a Spark usando el --packages
opción de línea de comando. Por ejemplo, para incluirlo al iniciar el Spark Shell:
$SPARK_HOME/bin/spark-shell --packages com.crealytics:spark-excel_2.11:0.13.1
- Es necesario agregar dependencias (en caso de maven, etc.):
groupId: com.crealytics artifactId: spark-excel_2.11 version: 0.13.1
Lectura adicional: vea mi artículo (¿Cómo hacer informes simples con hojas de Excel usando Apache Spark, Scala?) de cómo escribir en un archivo de Excel después de una agregación en muchas hojas de Excel
Propina : Este es un enfoque muy útil, particularmente para escribir casos de prueba maven donde puede colocar hojas de Excel con datos de muestra en Excel
src/main/resources
y puede acceder a ellos en los casos de prueba de su unidad (scala/java), lo que creaDataFrame
[s] fuera de la hoja de excel…
- Otra opción que podría considerar es spark-hadoopoffice-ds
Una fuente de datos de Spark para la biblioteca de HadoopOffice. Esta fuente de datos de Spark asume al menos Spark 2.0.1. Sin embargo, la biblioteca de HadoopOffice también se puede usar directamente desde Spark 1.x. Actualmente, esta fuente de datos admite los siguientes formatos de la biblioteca de HadoopOffice:
Formato de fuente de datos de Excel:
org.zuinnote.spark.office.Excel
Carga y guardado de Excel antiguo (.xls) y Excel nuevo (.xlsx) Esta fuente de datos está disponible en Spark-packages.org y en Maven Central.
Alternativamente, puede usar la biblioteca de HadoopOffice (https://github.com/ZuInnoTe/hadoopoffice/wiki), que también admite documentos de Excel cifrados y libros de trabajo vinculados, entre otras funciones. Por supuesto, Spark también es compatible.
Eres capaz de corroborar nuestra publicación mostrando un comentario o dejando una puntuación te damos las gracias.