Spark RDD存储在块中还是存储在内存中?围绕Spark的几个问题

时间:2016-04-10 18:33:14

标签: apache-spark rdd

关于Spark RDD的问题很少。请有人赐教。

  1. 我可以看到RDD分布在各个节点上,这是否意味着 分布式RDD缓存在每个节点的内存中或将该RDD数据缓存 驻留在hdfs磁盘上。或者只有当任何应用程序运行RDD数据时才会获得 缓存在记忆中?

    1. 我的理解是,当我根据存在的文件创建RDD时 在hdfs块上,RDD将首次从中读取数据(I / O操作) 块然后持久缓存它。至少有一次它有 从磁盘读取数据,是真的???

    2. 如果我可以将外部数据直接缓存到RDD中,有什么办法吗? 首先将数据存储在hdfs中,然后从hdfs块加载到RDD中? 这里的目的是首先将数据存储到hdfs中,然后将其加载到 在内存中会出现延迟??

1 个答案:

答案 0 :(得分:0)

  1. Rdd&是类似于数组和列表的数据结构。当您创建RDD(例如:加载文件)时,如果它处于本地模式,它将存储在笔记本电脑中。如果您使用的是hdfs,则它存储在hdfs中。记得在DISK上。 如果要将其存储在缓存中(在RAM中),可以使用cache()功能。
  2. 希望你从第一个问题得到第二个问题的答案。
  3. 是的,您可以直接从笔记本电脑加载数据,而无需将其加载到hdfs中。
  4. val newfile = sc.textFile("file:///home/user/sample.txt")

    指定文件路径。 默认情况下,spark使用hdfs作为存储,你可以使用上面的行来改变它。

    别忘了把三个///:

    file:///