如何在Spark [使用scala]中检查s3path是否存在?

时间:2015-07-23 09:24:26

标签: scala apache-spark emr

我正在寻找一种更清晰的方法来检查s3路径是否为空。

我目前的代码是这样的,

 if (!s3Path.isEmpty) {
  try {
    var rdd = sc.textFile(s3Path)
    rdd.partitions.size
  } catch {
    case _: org.apache.hadoop.mapred.InvalidInputException =>
      (sc.parallelize(List()))
  }
}

我想在不创建RDD的情况下这样做。

1 个答案:

答案 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。