Tôi có tệp Excel(xlsx and xls)
lớn có nhiều trang tính và tôi cần chuyển đổi nó thành RDD
hoặc Dataframe
để có thể tham gia vào dataframe
sau đó. Tôi đã nghĩ đến việc sử dụng Apache POI và lưu nó dưới dạng CSV
và sau đó đọc csv
trong dataframe
. Nhưng nếu có bất kỳ thư viện hoặc API nào có thể trợ giúp trong Quy trình này sẽ dễ dàng. Bất kỳ sự trợ giúp nào cũng được đánh giá cao.Cách xây dựng Dataframe từ tệp Excel (xls, xlsx) trong Scala Spark?
Trả lời
Giải pháp cho vấn đề của bạn là sử dụng phụ thuộc Spark Excel
trong dự án của bạn.
Spark Excel có linh hoạt options
để chơi cùng.
Tôi đã thử nghiệm đoạn mã sau để đọc từ excel
và chuyển nó sang dataframe
và nó chỉ hoạt động hoàn hảo
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)
bạn có thể cho sheetname
như option
nếu excel sheet của bạn có nhiều tờ
.option("sheetName", "Sheet2")
Tôi hy vọng nó hữu ích
Ngoài ra, bạn có thể sử dụng thư viện HadoopOffice (https://github.com/ZuInnoTe/hadoopoffice/wiki), hỗ trợ các tài liệu Excel được mã hóa và sổ làm việc được liên kết, cùng với các tính năng khác. Tất nhiên Spark cũng được hỗ trợ.
Xin chào tất cả, chúng ta có thể sử dụng ở trên để ghi dữ liệu vào nhiều tab trong một bảng excel ?. – Bharath
Tôi giả sử bạn có nghĩa là nhiều trang tính trong sổ làm việc Excel. Có, nó có thể ghi vào nhiều trang tính. Về cơ bản bạn xác định SpreadSheetCellDAO chỉ định định dạngValue, Comment, Formula, Address và Sheet. Tuy nhiên, để hỗ trợ bạn nhiều hơn, tôi sẽ cần phải biết thêm về trường hợp sử dụng của bạn. Vui lòng cung cấp thông tin dưới dạng vấn đề Github: https://github.com/ZuInnoTe/hadoopoffice/issues –
Dưới đây là đọc và viết ví dụ để đọc từ và ghi vào excel với tập hợp đầy đủ các tùy chọn. ..
Nguồn spark-excel from crealytics
Scala API Spark 2.0+:
Tạo một DataFrame từ file 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")
Viết DataFrame đến một Tệp 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")
Lưu ý: Thay vì sheet1 hoặc Sheet2 bạn có thể sử dụng tên của họ cũng .. trong ví dụ này đưa ra ở trên Daily là tên sheet.
- Nếu bạn muốn sử dụng nó từ vỏ spark ...
gói này có thể được bổ sung vào Spark sử dụng tùy chọn dòng lệnh --packages
.Ví dụ, để bao gồm nó khi khởi động vỏ spark:
$SPARK_HOME/bin/spark-shell --packages com.crealytics:spark-excel_2.11:0.9.8
- Dependencies cần được thêm vào (trong trường hợp của maven vv ...):
groupId: com.crealytics artifactId: spark-excel_2.11 version: 0.9.8
Mẹo: Đây là cách tiếp cận rất hữu ích đặc biệt cho các văn bản trường hợp thử nghiệm maven nơi bạn có thể đặt tấm excel với dữ liệu mẫu trong excel
src/main/resources
thư mục và bạn có thể truy cập chúng trong trường hợp của bạn đơn vị kiểm tra (scala/java), mà tạo raDataFrame
[s] ra khỏi bảng excel ...
- Một lựa chọn khác bạn có thể xem xét là spark-hadoopoffice-ds
Một datasourc Spark e cho thư viện HadoopOffice. Nguồn dữ liệu Spark này giả sử ít nhất là Spark 2.0.1. Tuy nhiên, thư viện HadoopOffice có thể cũng được sử dụng trực tiếp từ Spark 1.x. Hiện nay nguồn dữ liệu này hỗ trợ các định dạng sau của thư viện HadoopOffice:
Excel Datasource định dạng:
org.zuinnote.spark.office.Excel
Bốc Tiết kiệm cũ Excel (.xls) và mới Excel (.xlsx) nguồn dữ liệu này là sẵn trên Spark-packages.org và trên Maven Central .
- 1. cách tạo DataFrame từ nhiều mảng trong Spark Scala?
- 2. C# Chuyển đổi tệp Excel 2007 (xlsx) sang tệp Excel 2003 (xls)
- 3. Cách đọc từ XLSX (Excel)?
- 4. Lightweight Excel (xls/xlsx) thư viện php cần
- 5. Cách đọc tệp Excel trong Scala
- 6. Sử dụng C# để đọc/ghi các tệp Excel (.xls/.xlsx)
- 7. Cách xuất tệp Excel * .xls từ ASP cổ điển
- 8. Cách đọc dữ liệu từ tệp XLS (Excel) [Java, Android]
- 9. Tạo các tệp Excel (.xlsx) trong Cocoa
- 10. Làm thế nào để xây dựng Spark từ các nguồn từ trang Tải xuống Spark?
- 11. Mở một tệp Excel và lưu dưới dạng .XLS
- 12. PHP Đọc tập tin xlsx Excel 2007
- 13. Tạo một bảng SQL từ một tệp xls (Excel)
- 14. Lưu XLS Sử dụng Interop Excel
- 15. xây dựng lặp lại dataframe trong R
- 16. cách lưu tệp xls dưới dạng tệp xlsx bằng NPOI C#?
- 17. Làm cách nào để đọc tệp .xlsx và .xls trong Java?
- 18. Làm cách nào để tải xuống tệp excel (.xls) từ API trong người đưa thư?
- 19. Pandas Dataframe to excel sheet
- 20. Đọc tệp excel xlsx sử dụng simplexlsx trong php
- 21. Cách xác định doc, docx, pdf, xls và xlsx dựa trên tiêu đề tệp
- 22. Scala Spark: Cách tạo RDD từ danh sách chuỗi và chuyển đổi thành DataFrame
- 23. Làm thế nào để xây dựng ClassTag cho Spark SQL DataFrame Mapping?
- 24. Làm cách nào để xuất DataFrame sang csv trong Scala?
- 25. Tên tệp feed1.xls không thể đọc được trong php
- 26. Tạo Spark DataFrame trong Spark Streaming từ JSON Message trên Kafka
- 27. Đọc từ tệp excel .xlsx bằng cách sử dụng java Apache POI 3.9 Eclipse
- 28. Chuyển csv sang xls/xlsx bằng Apache poi?
- 29. Tạo nhãnPointPoint từ Spark DataFrame bằng Python
- 30. Cách tạo tệp XLS thực trên asp.net C#?
Kiểm tra câu trả lời này cho người mới với các bước https://stackoverflow.com/a/47721326/2112382 – vijayraj34