如何在 java 中使用 spark 从 AWS S3 读取 .xls 文件?并且无法读取 sheetName
Posted
技术标签:
【中文标题】如何在 java 中使用 spark 从 AWS S3 读取 .xls 文件?并且无法读取 sheetName【英文标题】:How to read an .xls file from AWS S3 using spark in java? And unable to read sheetName 【发布时间】:2019-05-22 07:43:28 【问题描述】:我正在尝试从 AWS S3 读取 .xls 文件,但收到 java.io.FileNotFoundException 异常。
我尝试了以下两种方法。一种方法是在 option() 中提供带有关键位置的路径,另一种方法是在 load() 中添加相同的路径。
Dataset<Row> segmentConfigData = spark.read()
.format("com.crealytics.spark.excel")
.option("sheetName", "sheet1")
.option("header","true")
.option("location","s3a://input/552SegmentConfig.xls")
.option("useHeader", "true")
.option("treatEmptyValuesAsNulls", "true")
.option("inferSchema", "true")
.option("addColorColumns", "False")
.load();
Dataset<Row> segmentConfigData = spark.read()
.format("com.crealytics.spark.excel")
.option("sheetName", "sheet1")
.option("header","true")
.option("location","s3a://input/552SegmentConfig.xls")
.option("useHeader", "true")
.option("treatEmptyValuesAsNulls", "true")
.option("inferSchema", "true")
.option("addColorColumns", "False")
.load("s3a://input/552SegmentConfig.xls");
我得到文件未找到异常。同样,当我读取 .csv 文件时,我能够读取该文件。
编辑-我已经解决了这个问题。我使用的是旧版本的“com.crealytics.spark.excel”。一旦我取消了罐子的等级,我就可以准备好了。
但现在我面临另一个问题。除了第一张纸之外,我无法阅读任何其他纸。有什么帮助吗?
【问题讨论】:
【参考方案1】:我已经解决了这个问题。我使用的是旧版本的“com.crealytics.spark.excel”。一旦我取消了罐子的等级,我就可以准备好了。
此外,我刚刚能够读取 (.xls) 文件的第一页。下面是代码sn-p:
spark.read()
.format("com.crealytics.spark.excel")
.option("location",path)
.option("sheetName", sheetName)
.option("dataAddress", "'"+sheetName+"'!A1")
.option("header","true")
.option("useHeader", "true")
.option("treatEmptyValuesAsNulls", "true")
.option("inferSchema", "true")
.option("addColorColumns", "False")
.load(path);
【讨论】:
以上是关于如何在 java 中使用 spark 从 AWS S3 读取 .xls 文件?并且无法读取 sheetName的主要内容,如果未能解决你的问题,请参考以下文章
如何从本地安装的 spark 连接到 aws-redshift?
如何克服 AWS Glue 作业中的 Spark“设备上没有剩余空间”错误
如何在 AWS Elastic Beanstalk 上安装/运行 Spark Java 框架?