scala—如何获取spark中从s3路径读取的文件数

h4cxqtbf  于 2021-07-12  发布在  Spark
关注(0)|答案(1)|浏览(444)

因此,我使用的是spark中最通用的s3读取代码,它将指定目录中的多个文件读取到单个Dataframe中:

val df=spark.read.option("sep", "\t")
  .option("inferSchema", "true")
  .option("encoding","UTF-8")
  .schema(sch)
  .csv("s3://my-bucket/my-directory/")

获取从此路径读取的文件数的最佳方法(如果有的话)是什么?

bq9c1y66

bq9c1y661#

你可以试着数一数 input_file_name() :

val nbFiles = df.select(input_file_name()).distinct.count

或者使用hadoop文件系统:

import org.apache.hadoop.fs.Path

val s3Path = new Path("s3://my-bucket/my-directory/")
val contentSummary = s3Path.getFileSystem(sc.hadoopConfiguration).getContentSummary(s3Path)

val nbFiles = contentSummary.getFileCount()

相关问题