我有一個大的Excel(xlsx and xls)
文件與多個工作表,我需要將其轉換爲RDD
或Dataframe
,以便它可以加入到其他dataframe
以後。我正在考慮使用Apache POI並將其保存爲CSV
,然後在dataframe
中讀取csv
。但是,如果有任何圖書館或API可以在這個過程中提供幫助,那將很簡單。任何幫助,高度讚賞。如何從Scala Spark的Excel(xls,xlsx)文件構建Dataframe?
回答
解決您的問題的方法是在項目中使用Spark Excel
依賴項。
Spark Excel已靈活options
玩。
我已經測試了下面的代碼從excel
閱讀並轉換成dataframe
,它只是完美的作品
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)
你可以給sheetname
爲option
,如果你的Excel工作表中有多個工作表
.option("sheetName", "Sheet2")
我希望它有幫助
或者,您可以使用HadoopOffice庫(https://github.com/ZuInnoTe/hadoopoffice/wiki),它還支持加密的Excel文檔和鏈接的工作簿以及其他功能。當然Spark也支持。
您好所有,我們能否用上面的Excel工作表中寫數據到多個標籤? – Bharath
我假設你是指Excel工作簿中的多個工作表。是的,它可以寫入多個工作表。基本上你定義了一個SpreadSheetCellDAO,它指定了格式化值,註釋,公式,地址和表單。但是,爲了更多地支持您,我需要更多地瞭解您的使用案例。隨意提供Github問題的信息:https://github.com/ZuInnoTe/hadoopoffice/issues –
這裏有閱讀和寫例子從閱讀和全套選項寫入到Excel 。 ..
斯卡拉API 星火2.0+:
從Excel中創建一個數據幀文件
import org.apache.spark.sql.SQLContext
val sqlContext = new SQLContext(sc)
val df = sqlContext.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")
寫數據幀到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")
注:除了工作表Sheet1的或Sheet2中,你可以在上面日報給出的這個例子中使用他們的名字以及.. 是表名稱。
- 如果你想從火花外殼使用它...
該軟件包可以添加使用--packages
命令行選項來的火花。需要添加
$SPARK_HOME/bin/spark-shell --packages com.crealytics:spark-excel_2.11:0.9.8
- 相關性(在行家等情況下...)::
groupId: com.crealytics artifactId: spark-excel_2.11 version: 0.9.8
例如,爲了啓動火花殼時它包括
提示:這是非常有用的方法特別是用於寫入 行家測試情況下,可以放置Excel表與採樣數據在Excel
src/main/resources
文件夾,並可以在您的單元測試用例(階/爪哇),它創建DataFrame
訪問它們[s]的從Excel工作表的...
- 另一種選擇,你可以考慮的是 spark-hadoopoffice-ds
火花datasourc e用於HadoopOffice庫。這個Spark數據源 至少假設了Spark 2.0.1。但是,HadoopOffice庫也可以直接從Spark 1.x中使用 。目前這款數據源 支持HadoopOffice庫的格式如下:
的Excel數據源格式:舊的Excel(.xls的)和新的Excel的
org.zuinnote.spark.office.Excel
加載和保存 (.xlsx)格式這個數據源是Spark-packages.org和Maven Central 可用。
- 1. spark scala DataFrame error
- 2. Spark scala Dataframe isin
- 3. SSIS導入Excel文件XLS/XLSX
- 4. 從xls和xlsx excel文件讀取和寫入文件
- 5. C#將Excel 2007(xlsx)文件轉換爲Excel 2003(xls)文件
- 6. 在Spark DataFrame中的na.fill Scala
- 7. PHP將Excel文件從「.xls」轉換爲「.xlsx」
- 8. Spark/Scala:結構類型爲Spark的DataFrame列
- 9. 任何處理Excel(* .xls和* .xlsx)文件的開源/免費庫?
- 10. vb.net遍歷xls/xlsx文件?
- 11. 如何從JavaScript生成Excel xlsx文件
- 12. Spark Dataframe - 架構文件定義
- 13. 從xls(Excel)文件創建SQL表
- 14. 如何將Spark Spark Scala DataFrame綁定到zeppelin的sparkR?
- 15. 在Apache Spark Scala中,如何從CSV中填充DataFrame中的Vectors.dense?
- 16. 將Excel xlsx轉換爲Java中的xls
- 17. 如何將2007 Excel Workbook應用程序從.xls升級到.xlsx?
- 18. 解析xlsx和xls Excel文件的單個Ruby Gem?
- 19. PowerShell腳本查找擴展名爲.xls和.xlsx的Excel文件
- 20. 導出Excel的.xls和.XLSX EPPlus .NET
- 21. 操縱Excel的XLS和XLSX在.NET
- 22. 使用C#讀取/寫入Excel文件(.xls/.xlsx)
- 23. Spark DataFrame AnalysisException
- 24. 將多個Excel .xls文件轉換爲.xlsx格式
- 25. php excel到mysql。轉換xls和xlsx都
- 26. 我的Perl腳本如何確定Excel文件是XLS還是XLSX格式?
- 27. 在XLS和XLSX中使用Excel宏
- 28. Scala Spark:如何從字符串列表創建RDD並將其轉換爲DataFrame
- 29. Excel宏將xlsx轉換爲xls
- 30. 我該如何將Excel格式.xlsx的excel文件轉換爲Java 1.3中的.xls文件?
檢查這個答案與步驟 新手https://stackoverflow.com/a/47721326/2112382 – vijayraj34