В повседневной работе инструменты таблицы очень удобны, но когда таблиц слишком много, требуется определенная обработка. Как мощное программное обеспечение для обработки данных Excel широко используется во всех сферах жизни, от управления бизнесом до анализа данных, он повсюду. Однако при работе с большими и сложными данными возможностей обработки Excel может оказаться недостаточно.
В связи с этим мы можем использовать Apache Spark, среду распределенных вычислений, для быстрой и эффективной обработки данных Excel с ее мощными возможностями вычислений и обработки данных. Эти данные анализируются, сортируются, фильтруются и сортируются. Анализируйте и систематизируйте полезный контент.
Создайте проект Spark. При создании проекта Spark в IntelliJ IDEA структура каталогов по умолчанию выглядит следующим образом:
project-root/
│
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── (Java source files)
│ │ └── scala/
│ │ └── (Scala source files)
│ └── test/
│ ├── java/
│ │ └── (Test Java source files)
│ └── scala/
│ └── (Test Scala source files)
├── resources/
│ └── (Resource files)
└── target/
└── (Compiled output and build artifacts)
существоватьbuild.sbtДобавитьдействоватьдокументупаковка
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % sparkVersion,
"org.apache.spark" %% "spark-sql" % sparkVersion,
"org.apache.spark" %% "spark-mllib" % sparkVersion,
"org.apache.spark" %% "spark-streaming" % sparkVersion,
"com.norbitltd" %% "spoiwo_2.12" % "1.4.1",
"com.crealytics" %% "spark-excel" % "0.13.7",
"com.monitorjbl" %% "xlsx-streamer" % "2.1.0"
)
name | age |
---|---|
Mic | 1 |
Andy | 3 |
Steven | 1 |
Чтение файлов Excel с помощью Spark очень просто. Просто укажите путь и формат файла в API DataFrame, и Spark сможет автоматически импортировать файл Excel и преобразовать его в DataFrame для обработки и анализа данных.
API Spark поддерживает фильтрацию, агрегирование и сортировку. Кроме того, встроенные богатые функции обработки данных и операций делают обработку данных Excel более удобной.
package com.example.spark
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.SparkSession
object SparkTest {
def main(args: Array[String]): Unit = {
//скала-версия
val sparkConf = new SparkConf()
sparkConf.setMaster("local") //Локальная однопоточная операция
sparkConf.setAppName("testJob")
// val sc = new SparkContext(sparkConf)
val spark = SparkSession.builder().config(sparkConf)
.appName("Excel Demo")
.getOrCreate()
// читать Excel документ
val df = spark.read
.format("com.crealytics.spark.excel")
.option("dataAddress", "'Sheet2'!A1:B2") // Необязательно, установите выбранную область данных Например A1:C2。
.option("useHeader", "false") // Обязательно, использовать ли заголовок, если false, назвать заголовок (_c0) самостоятельно, если true, то первая строка - это заголовок
.option("treatEmptyValuesAsNulls", "true") // необязательный, Устанавливать ли пустые ячейки в значение null , если не установлено значение null При обнаружении пустой ячейки будет сообщено об ошибке. По умолчанию т: true
.option("inferSchema", "true") // необязательный, default: false
//.option("addColorColumns", "true") // необязательный, default: false
//.option("timestampFormat", "yyyy-mm-dd hh:mm:ss") // необязательный, default: yyyy-mm-dd hh:mm:ss[.fffffffff]
//.option("excerptSize", 6) // необязательный, default: 10. If set and if schema inferred, number of rows to infer schema from
//.option("workbookPassword", "pass") // необязательный, default None. Requires unlimited strength JCE for older JVMs====
//.option("maxRowsInMemory", 20) // необязательный, default None. If set, uses a streaming reader which can help with big files====
.schema(schema) // необязательный, default: Either inferred schema, or all columns are Strings
// .option("header", "true")
.load("path/to/excel/file.xlsx")
// показывать DataFrame содержание
df.show()
// +-------+---+
// | name|age|
// +-------+---+
// | Mic| 1|
// | Andy| 3|
// | Steven| 1|
// +-------+---+
// Воля DataFrame писать Excel документ
df.write
.format("com.crealytics.spark.excel")
.option("dataAddress", "'Sheet'!A1:B2")
.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("append") // Optional, default: overwrite.
.option("header", "true")
.save("path/to/save/excel/file.xlsx")
}
}
После завершения обработки данных результаты можно сохранить в новом файле Excel или файлах другого формата. С помощью API DataFrame его можно легко реализовать независимо от того, сохраняется ли он в локальной файловой системе или в облаке. Чтобы сохранить данные, вы также можете выбрать различные форматы вывода в соответствии с вашими потребностями, например CSV, XLSX и т. д.
Хотя Spark обрабатывает только базовые данные, он демонстрирует отличные возможности крупномасштабной обработки данных в кластерной среде. Будь то массивные данные Excel или сложные структурированные данные, с помощью Spark можно легко обрабатывать и решать различные задачи обработки и анализа данных.
Использование Apache Spark для обработки файлов Excel и полного раскрытия потенциала распределенных вычислений может сделать процесс обработки и анализа данных более эффективным и выдающимся, а также значительно повысить эффективность и точность обработки данных. Я надеюсь, что эта статья даст вам более глубокое понимание обработки Spark в Excel и лучшее применение на практике.
https://github.com/crealytics/spark-excel
Ставьте лайки, подписывайтесь и комментируйте три раза в один клик, делясь техническими советами, проектами с открытым исходным кодом, практическим опытом, переводами качественных зарубежных статей и т. д. Каждую неделю Ваше внимание будет моей мотивацией для обновлений.