创建 RDD 与创建 RDD 所花费的时间。来自 HDFS 文件的数据帧
Posted
技术标签:
【中文标题】创建 RDD 与创建 RDD 所花费的时间。来自 HDFS 文件的数据帧【英文标题】:Time taken in creating RDD Vs. Dataframe from HDFS File 【发布时间】:2018-11-01 11:44:46 【问题描述】:我在 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)
dataframe 和 RDD 中的分区数相同 (8735)。 创建数据框时消耗时间的原因是什么。
【问题讨论】:
【参考方案1】:你比较RDD代码
不进行模式推断, 除了定位新行之外没有解析, 并且只读取前 50 行(可能最多一个分区)。和Dataset
代码
期望两者花费相同的时间是不现实的。
【讨论】:
以上是关于创建 RDD 与创建 RDD 所花费的时间。来自 HDFS 文件的数据帧的主要内容,如果未能解决你的问题,请参考以下文章