我正在尝试使用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]};
任何人都可以在这里指导我在做什么错吗?