как я могу преодолеть файл не основание исключения - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь прочитать несколько файлов Excel, которые находятся в одном каталоге, но я столкнулся с ошибкой java.io.FileNotFoundException: Путь к файлу / ** не существует

          object example {
                 def main(args: Array[String]): Unit = {
           val spark = SparkSession.builder().appName("Excel to 
                     DataFrame").master("local[2]").getOrCreate()

val path = "C:\\excel\\files"
val df = spark.read.format("com.crealytics.spark.excel")
 .option("location", "true")
 .option("useHeader", "true")
 .option("treatEmptyValuesAsNulls", "true")
 .option("inferSchema","true")
 .option("addColorColumns", "true")
 .option("timestampFormat", "MM-dd-yyyy HH:mm:ss")
 .load("path")

1 Ответ

1 голос
/ 04 июня 2019

Попробуйте это:

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)

Если вы хотите прочитать конкретный лист:

.option("sheetName", "Sheet2")

РЕДАКТИРОВАТЬ: для чтения нескольких файлов Excel в одном кадре данных.(при условии, что столбцы в файле excel совпадают). Для этого я использовал пакет spark-excel.Его можно добавить в файл build.sbt следующим образом:

libraryDependencies += "com.crealytics" %% "spark-excel" % "0.8.2"

Код выглядит следующим образом:

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.{SparkSession, DataFrame}
import java.io.File

val conf = new SparkConf().setAppName("Excel to DataFrame").setMaster("local[*]")
val sc = new SparkContext(conf)
sc.setLogLevel("WARN")

val spark = SparkSession.builder().getOrCreate()

// Function to read xlsx file using spark-excel. 
// This code format with "trailing dots" can be sent to Scala Console as a block.
def readExcel(file: String): DataFrame = spark.read.
  format("com.crealytics.spark.excel").
  option("location", file).
  option("useHeader", "true").
  option("treatEmptyValuesAsNulls", "true").
  option("inferSchema", "true").
  option("addColorColumns", "False").
  load()

val dir = new File("path to your excel file")
val excelFiles = dir.listFiles.sorted.map(f => f.toString)  // Array[String]

val dfs = excelFiles.map(f => readExcel(f))  // Array[DataFrame]
val ppdf = dfs.reduce(_.union(_))  // DataFrame 

ppdf.count()
ppdf.show(5)

Надеюсь, это поможет.Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...