У меня есть файл на HDFS с конфигурациями ниже размера блока.
Status: HEALTHY Total size: 1172387607850 B Total dirs: 0 Total files: 1 Total symlinks: 0 Total blocks (validated): 8735 (avg. block size 134217241 B) Minimally replicated blocks: 8735 (100.0 %) Over-replicated blocks: 0 (0.0 %) Under-replicated blocks: 0 (0.0 %) Mis-replicated blocks: 0 (0.0 %) Default replication factor: 3 Average block replication: 3.0 Corrupt blocks: 0 Missing replicas: 0 (0.0 %) Number of data-nodes: 16 Number of racks: 1 FSCK ended at Tue Oct 30 02:30:04 EDT 2018 in 75 milliseconds
Я попытался создать RDD, используя данный файл, с помощью простой команды
rdd1 = sqlContext.textFile("File HDFS path")
rdd1.take(50)
Эта команда выполнялась в миллисекундах
Затем я попытался создать Dataframe, используя тот же файл. Это заняло много времени, так как количество созданных задач - 8735 (Нет блоков в файле).
data_df = spark.read.format("com.databricks.spark.csv") \
.option("header", "false") \
.option("inferschema", "true") \
.option("delimiter", "|").load(HDFS_FILE_PATH)
Количество разделов в кадре данных и RDD одинаково (8735).
Что может быть причиной потери времени при создании кадра данных.