加载Excel文件的强制选项有哪些?

时间:2017-06-08 05:21:24

标签: excel scala apache-spark apache-spark-sql

我使用以下语法从S3加载了一个excel文件,但我想知道需要在这里设置的选项。

为什么必须设置以下所有加载Excel文件的选项?这些选项都不是必须加载其他文件类型,如csv,del,json,avro等。

val data = sqlContext.read.
format("com.crealytics.spark.excel").
option("location", s3path).
option("useHeader", "true").
option("treatEmptyValuesAsNulls", "true").
option("inferSchema","true").
option("addColorColumns", "true").
load(path)

如果未设置上述任何选项(位置除外),我会收到以下错误:

sqlContext.read.format("com.crealytics.spark.excel").option("location", s3path).load(s3path)

错误讯息:

Name: java.lang.IllegalArgumentException
Message: Parameter "useHeader" is missing in options.
StackTrace:   at com.crealytics.spark.excel.DefaultSource.checkParameter(DefaultSource.scala:37)
          at com.crealytics.spark.excel.DefaultSource.createRelation(DefaultSource.scala:19)
          at com.crealytics.spark.excel.DefaultSource.createRelation(DefaultSource.scala:7)
          at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:345)
          at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:149)
          at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:132)
          at $anonfun$1.apply(<console>:47)
          at $anonfun$1.apply(<console>:47)
          at time(<console>:36)

1 个答案:

答案 0 :(得分:3)

spark-exceluserSchema外,sheetName的大多数选项都是强制性的。

您可以随时在DataSource源代码中查找here

您必须记住,此数据源或数据连接器包是在spark项目之外实现的,每个包都带有他的规则和参数。