我使用以下语法从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)
答案 0 :(得分:3)
除spark-excel
和userSchema
外,sheetName
的大多数选项都是强制性的。
您可以随时在DataSource源代码中查找here。
您必须记住,此数据源或数据连接器包是在spark项目之外实现的,每个包都带有他的规则和参数。