Apache spark 在Spark中,我们是否可以保证同一分区中的数据来自同一个文件

Apache spark 在Spark中,我们是否可以保证同一分区中的数据来自同一个文件,apache-spark,Apache Spark,为了简化我的用例,让我们假设我使用spark加载了多个大型文件,其中包含以下代码: val df = spark.read.textFile(files: _*) .withColumn("partition_id", spark_partition_id()) .withColumn("input_file_name", input_file_name()) 这将产生一个spark数据帧,如: _____________________

为了简化我的用例,让我们假设我使用spark加载了多个大型文件,其中包含以下代码:

val df = spark.read.textFile(files: _*)
              .withColumn("partition_id", spark_partition_id())
              .withColumn("input_file_name", input_file_name())
这将产生一个spark数据帧,如:

____________________________________________
|value        |partition_id|input_file_name|
|some line    |0           |file1          |
|some line    |0           |file1          |
|some line    |1           |file1          |
|some line    |1           |file1          |
|some line    |2           |file2          |
|some line    |2           |file2          |
正如您所知,单个文件可以分布在多个spark分区上(1个输入文件名->n个分区id)

我的问题是:我们是否保证对于单个分区,输入文件名总是相同的


提前谢谢你

我做了很多测试,答案是否定的,如果你有小文件,一个分区可能包含来自多个文件的许多行

我不相信这个问题有意义。文件和块位于永久性存储上,分区位于内存中,或者溢出到已读取或正在读取以及正在处理的磁盘上。你在现实中关心什么?