从S3 Spark SQL中的多个日期文件夹中加载ORC数据

时间:2020-06-24 06:09:21

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

我正在尝试使用Java中的Spark SQL API加载数据集。我在S3中的文件夹结构是

s3://my-bucket-name/prefix1/date=yyyy-mm-dd/

所以我在S3中有两个日期文件夹,如下所示:

s3://my-bucket-name/prefix1/date=2020-06-15/
s3://my-bucket-name/prefix1/date=2020-06-16/

我使用以下代码段加载数据集

    public static Dataset<MyPOJOClass> getORCRecordDataset (SQLContext sqlContext, String setOfPath) {
    
    Dataset<Row> rows = sqlContext.read().option("inferSchema", true).orc((setOfPath));
    Encoder<MyPOJOClass> myORCRecordEncoder = Encoders.bean(MyPOJOClass.class);
    Dataset<MyPOJOClass> myORCRecordDataset = rows.as(myORCRecordEncoder);
    log.error("count of record in myORCRecordDataset is = {} ", myORCRecordDataset.count());
    return myORCRecordDataset;
}

当我这样传递setOfPath变量时

s3://my-bucket-name/prefix1/{date=2020-06-15/,date=2020-06-16/}

上面的代码段为我加载了正确的数据集。

现在,我正尝试按照此处blob-pattern的说明使用Blob模式,并以此方式传递了setOfPath变量

s3://my-bucket-name/prefix1/{date=2020-06-[15-16]}/

这不起作用,并抛出了此异常

User class threw exception: org.apache.spark.sql.AnalysisException: Path does not exist: s3://my-bucket-name/prefix1/{date=2020-06-[15-16]};
org.apache.spark.sql.AnalysisException: Path does not exist: s3://my-bucket-name/prefix1/{date=2020-06-[15-16]};

任何人都可以在这里指导我在做什么错吗?

0 个答案:

没有答案