Hướng dẫn pyspark read excel from s3 - pyspark đọc excel từ s3

Tôi đang thử sử dụng pyspark từ AWS EMR để đọc tệp Excel mà nó cư trú S3, để làm điều này, tôi đã tải xuống Spark-Excel JARS Spark-Excel_2.11-0.12.4.Jar và Spark-EXCEL_2.12-0.13.5 .Jar và địa điểm vào thùng S3

scenario 1:
===========
df = spark.read.format("com.crealytics.spark.excel").option("useHeader", "true").option("inferschema", "true").load("s3://bucket/abc.xlsx")

spark-submit --jars s3://Bucket/spark-excel_2.11-0.12.4.jar test.py

Error:
Caused by: java.lang.NoClassDefFoundError: org/apache/commons/collections4/IteratorUtils

scenario2:
=========
df = spark.read.format("com.crealytics.spark.excel").option("header", "true").option("inferschema", "true").load("s3://bucket/abc.xlsx")

spark-submit --jars s3://Bucket/spark-excel_2.12-0.13.5.jar test.py

Error:
py4j.protocol.Py4JJavaError: An error occurred while calling o79.load.
: java.lang.NoSuchMethodError: scala.Product.$init$(Lscala/Product;)

Một số người có thể vui lòng hỗ trợ tôi khắc phục vấn đề này không? Tôi đánh giá cao sự giúp đỡ của bạn !

hỏi ngày 12 tháng 2 năm 2021 lúc 22:39Feb 12, 2021 at 22:39

Hướng dẫn pyspark read excel from s3 - pyspark đọc excel từ s3

Bạn có thể đọc nó từ Excel trực tiếp. Thật vậy, đây nên là một thực hành tốt hơn so với liên quan đến gấu trúc kể từ đó lợi ích của tia lửa sẽ không còn tồn tại nữa.

Bạn có thể chạy cùng một mẫu mã như được định nghĩa ở trên, nhưng chỉ cần thêm lớp cần thiết vào cấu hình của Sparksession của bạn.

spark = SparkSession.builder \
.master("local") \
.appName("Word Count") \
.config("spark.jars.packages", "com.crealytics:spark-excel_2.11:0.12.2") \
.getOrCreate()

Sau đó, bạn có thể đọc tệp Excel của bạn.

df = spark.read.format("com.crealytics.spark.excel") \
.option("useHeader", "true") \
.option("inferSchema", "true") \
.option("dataAddress", "NameOfYourExcelSheet") \
.load("your_file"))

Đã trả lời ngày 13 tháng 2 năm 2021 lúc 8:48Feb 13, 2021 at 8:48

Hướng dẫn pyspark read excel from s3 - pyspark đọc excel từ s3

Amar Singhamar SinghAmar Singh

1.1803 huy hiệu vàng12 Huy hiệu bạc29 Huy hiệu đồng3 gold badges12 silver badges29 bronze badges

1

Có lẽ tài liệu Excel có thể phù hợp với bộ nhớ của người lái. Trong trường hợp đó, tôi sẽ đọc tệp bằng cách sử dụng gấu trúc trực tiếp từ S3 và sau đó tạo ra một tia lửa dữ liệu nhiều hơn. Thử một cái gì đó như:

import pandas as pd
pdf = pd.read_excel("s3://bucket/abc.xlsx")
pdf
   col1 col2
0   1.2    a
1   2.3    b

sdf = spark.createDataFrame(pdf)
sdf.show()

+----+----+
|col1|col2|
+----+----+
| 1.2|   a|
| 2.3|   b|
+----+----+

EDIT:

Cách tiếp cận được đề xuất này chỉ được giới thiệu cho rất ít tệp mà bạn có thể muốn tham gia với các khung dữ liệu khác. Nếu bộ dữ liệu lớn của bạn đến từ các tệp XLSX, tôi khuyên bạn nên làm theo giải pháp com.crealytics.spark.excel. Tuy nhiên, tôi sẽ lo lắng hơn về việc sử dụng định dạng Excel ở nơi đầu tiên.

Đã trả lời ngày 13 tháng 2 năm 2021 lúc 0:05Feb 13, 2021 at 0:05

Hướng dẫn pyspark read excel from s3 - pyspark đọc excel từ s3

EmeremerEmer

3.5742 Huy hiệu vàng32 Huy hiệu bạc46 Huy hiệu đồng2 gold badges32 silver badges46 bronze badges

3

Bạn đã bao giờ cố gắng đọc các tệp Excel trên keo (pyspark) và từ bỏ vì đó không phải là công việc? Cũng không có gì nữa bài viết này sẽ cho bạn thấy các bước liên quan để làm việc trên các tệp Excel với pyspark trong keo và EMR.

Pyspark không có một thư viện hỗ trợ các tệp Excel. Có một thư viện được tạo ra bởi Creailytics cho Scala mà chúng tôi sẽ sử dụng để làm việc với Pyspark. Làm việc với Excel trong Databricks rất dễ dàng với một cú nhấp chuột bằng cách chỉ vào phần thư viện và nhập tên gói và bùng nổ nó đã tải xuống và cài đặt và sẵn sàng để sử dụng. Đây là trường hợp với keo AWS.crealytics for scala which we’ll be using to work with in Pyspark. Working with excel in Databricks is easy with a single click by just going to the library section and entering the package name and boom it’s downloaded and installed and ready to use. This isn’t the case with AWS Glue.

Một đường vòng nhỏ cho những người làm việc trên keo lần đầu tiên, keo AWS hoạt động khác nhau vì các thư viện mà chúng tôi muốn làm việc nên được chuyển đến một thùng S3 và sau đó đường dẫn của các thư viện này nên được đề cập trong hộp văn bản đường dẫn thư viện Python Trong khi tạo ra một công việc keo. Sau đó, các thư viện này có thể được nhập trong mã. Ngoài ra keo dán không hỗ trợ các thư viện được biên dịch với ngôn ngữ ’c. Keo hiện chỉ cung cấp Spark phiên bản 2.4.3 và phiên bản Scala mặc định đi kèm với nó là 2.11. Đây không phải là những phiên bản mới nhất có sẵn bên ngoài.

Vì vậy, quay trở lại điểm làm việc với các tệp excel trong keo, người ta phải tải xuống thủ công (có thể được tải xuống từ kho lưu trữ MVN) tất cả các tệp có cùng phiên bản được đề cập trong ảnh dưới đây. Nếu phiên bản khác nhau, nó có thể không hoạt động.MVN repository) all the files with the same version mentioned in the below pic. If the version is different it might not work.

phụ thuộc Excel Spark-Excel

Gửi tất cả các thư viện này vào một thùng S3 và đề cập đến đường dẫn trong hộp văn bản đường dẫn thư viện Python Python. Hãy chắc chắn rằng công việc keo của bạn có các chính sách IAM cần thiết để truy cập vào thùng này.

Bây giờ chúng tôi sẽ nhảy vào mã. Sau khi khởi tạo Sparksession, chúng ta có thể đọc tệp Excel như được hiển thị bên dưới.

Tệp excel mẫu đọc bằng pyspark

Các tùy chọn có sẵn để đọc được liệt kê dưới đây,

spark.read
.format("com.crealytics.spark.excel")
.option("dataAddress", "'My Sheet'!B3:C35") // Optional, default: "A1"
.option("header", "true") // Required
.option("treatEmptyValuesAsNulls", "false") // Optional, default: true
.option("setErrorCellsToFallbackValues", "true") // Optional, default: false, where errors will be converted to null. If true, any ERROR cell values (e.g. #N/A) will be converted to the zero values of the column's data type.
.option("usePlainNumberFormat", "false") // Optional, default: false, If true, format the cells without rounding and scientific notations
.option("inferSchema", "false") // Optional, default: false
.option("addColorColumns", "true") // Optional, default: false
.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
.option("workbookPassword", "pass") // Optional, default None. Requires unlimited strength JCE for older JVMs
.schema(myCustomSchema) // Optional, default: Either inferred schema, or all columns are Strings
.load("Worktime.xlsx")

Tương tự các tùy chọn có sẵn để viết là,

df.write
.format("com.crealytics.spark.excel")
.option("dataAddress", "'My Sheet'!B3:C35")
.option("header", "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("append") // Optional, default: overwrite.
.save("Worktime2.xlsx")

Trong EMR, chúng ta có thể đọc và viết theo mã giống như đã đề cập ở trên. Điều duy nhất cần thêm là một tham số bổ sung trong lệnh Submit của chúng tôi dành cho Scala 2.12 --packages com.crealytics:spark-excel_2.12:0.13.1 or Scala 2.11 --packages com.crealytics:spark-excel_2.11:0.13.1EMR we can read and write in the code the same way as mentioned above. The only thing to add would be an additional parameter in our spark-submit command which is for Scala 2.12 --packages com.crealytics:spark-excel_2.12:0.13.1 or Scala 2.11 --packages com.crealytics:spark-excel_2.11:0.13.1

Lệnh ví dụ: spark-submit --packages com.crealytics:spark-excel_2.11:0.13.1 --sample_script.py

Tôi hy vọng điều này đã giúp !!

Làm cách nào để đọc một tệp excel trong pyspark?

Làm cách nào để đọc một tệp excel trong databricks pyspark ?..
df2 = tia lửa. đọc. Định dạng ("com. creailytics. Spark. Excel"). Tùy chọn ("Tiêu đề", "Đúng"). tùy chọn ("inferschema", "true"). Tải ("DBFS: /filestore/shared_uploads/[email protected]/book. XLSX").
display(df2).

Làm cách nào để đọc tệp XLSX từ S3 trong Python?

Làm thế nào để bạn đọc Excel từ S3 bằng Gandas ?..
Nhập IO ..
Nhập Gandas dưới dạng PD ..
S3 = BOTO3.máy khách ('S3').
obj = s3.get_Object (xô = 'bucket_name', key = 'key_name').
df = pd.read_excel (io. bytesio (obj ['body']. read ())).

Làm cách nào để đọc các tệp trong pyspark s3?

Để đọc dữ liệu trên S3 đến một pyspark DataFrame bằng thông tin bảo mật tạm thời, bạn cần phải:..
Tải xuống một phân phối tia lửa đi kèm với Hadoop 3. X ..
Xây dựng và cài đặt gói pyspark ..
Nói với pyspark sử dụng thư viện Hadoop-Aws ..
Định cấu hình thông tin đăng nhập ..

Làm cách nào để đọc các tệp .xlsx trong Spark?

Vì lý do nào đó, Spark không đọc chính xác dữ liệu từ tệp XLSX trong cột với công thức ...
df = tia lửa.đọc\.
Định dạng ("com. crealytics. Spark. ....
Tùy chọn ("Tiêu đề", "Đúng") \.
Tải (input_path + input_folder_general + "test1. xlsx").
display(df).