我正在寻找一种更清晰的方法来检查s3路径是否为空。
我目前的代码是这样的,
if (!s3Path.isEmpty) {
try {
var rdd = sc.textFile(s3Path)
rdd.partitions.size
} catch {
case _: org.apache.hadoop.mapred.InvalidInputException =>
(sc.parallelize(List()))
}
}
我想在不创建RDD的情况下这样做。
答案 0 :(得分:2)
我检查s3path并查看它是否有效然后我将它传递给Spark以创建如下所示的RDD
$(".dynamicDiv").append('<div class="form-group"></div>');
这里s3是 com.amazonaws.services.s3.AmazonS3 并通过
初始化它 public boolean checkIfS3PathsValid(String bucketName, String key)
{
try{
ObjectListing list = s3.listObjects(bucketName,key);
List<S3ObjectSummary> objectInfoList = list.getObjectSummaries();
if(objectInfoList.size()>0)
{
return true;
}
else
{
return false;
}
}
catch (Exception e)
{
e.printStackTrace();
return false;
}
}
因此,在您的代码中调用checkIfS3PathsValid并查看它是否返回true。如果是,那么只有你使用sc.textfile创建RDD,否则你会忽略那个s3path。