Я читаю Интернет-книгу Яцека Ласковского об Apache Spark , а в отношении разбиения он утверждает, что
По умолчанию для каждого раздела HDFS создается раздел, которыйпо умолчанию 64 МБ
Я не очень знаком с HDFS, но столкнулся с некоторыми вопросами, повторяющими это утверждение.У меня есть файл с именем Reviews.csv
, который составляет около 330 МБ текстового файла обзоров продуктов питания Amazon.Учитывая стандартные блоки по 64 МБ, я бы ожидал ceiling(330 / 64) = 6
разделов.Тем не менее, когда я загружаю файлы в свою Spark Shell, я получаю 9 разделов:
scala> val tokenized_logs = sc.textFile("Reviews.csv")
tokenized_logs: org.apache.spark.rdd.RDD[String] = Reviews.csv MapPartitionsRDD[1] at textFile at <console>:24
scala> tokenized_logs
res0: org.apache.spark.rdd.RDD[String] = Reviews.csv MapPartitionsRDD[1] at textFile at <console>:24
scala> tokenized_logs.partitions
res1: Array[org.apache.spark.Partition] = Array(org.apache.spark.rdd.HadoopPartition@3c1, org.apache.spark.rdd.HadoopPartition@3c2, org.apache.spark.rdd.HadoopPartition@3c3, org.apache.spark.rdd.HadoopPartition@3c4, org.apache.spark.rdd.HadoopPartition@3c5, org.apache.spark.rdd.HadoopPartition@3c6, org.apache.spark.rdd.HadoopPartition@3c7, org.apache.spark.rdd.HadoopPartition@3c8, org.apache.spark.rdd.HadoopPartition@3c9)
scala> tokenized_logs.partitions.size
res2: Int = 9
Я замечаю, что если я создаю другую уменьшенную версию Reviews.csv
с именем Reviews_Smaller.csv
, которая составляет всего 135 МБ, язначительно уменьшенный размер раздела:
scala> val raw_reviews = sc.textFile("Reviews_Smaller.csv")
raw_reviews: org.apache.spark.rdd.RDD[String] = Reviews_Smaller.csv MapPartitionsRDD[11] at textFile at <console>:24
scala> raw_reviews.partitions.size
res7: Int = 4
Однако, по моей математике, должно быть ceiling(135 / 4) = 3
разделов, а не 4.
Я запускаю все локально, на моем MacBook Pro,Может кто-нибудь помочь объяснить, как рассчитывается количество разделов по умолчанию для HDFS?