如何在Java中使用Spark从AWS S3读取.xls文件?而且无法读取sheetName

时间:2019-05-22 07:43:29

标签: java amazon-s3 apache-spark-sql dataset

我正在尝试从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 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。我使用的是“ com.crealytics.spark.excel”的旧版本。放开罐子后,我就可以准备好了。

此外,我还能够读取(.xls)文件的第一页。下面是代码片段:

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);