当前位置: 首页 > 知识库问答 >
问题:

Spark使用数据局部性吗?

夏知
2023-03-14

在写作的情况下,这样的机制将如何运作?我知道,从技术上讲,HDFS中的文件可以保存在本地的任何节点中,并复制到其他两个节点(因此,在3个副本中有两个使用网络),但是,如果您考虑写入其他系统,如NoSQL数据库(Cassandra、HBase等),这些系统有自己的分发数据的方式。是否有一种方法告诉spark以一种基于输出接收器(目标NoSQL数据库,从本地或通过OutputFormat看到)所期望的数据分布优化数据局部性的方式对RDD进行分区?

我指的是Spark节点和NoSQL节点位于相同phisical机器中的环境。

共有1个答案

孙熠彤
2023-03-14

如果在同一台物理机器上使用Spark和Cassandra,应该检查spark-cassandra-connector,它将确保读写数据的局部性。

例如,如果将Cassandra表加载到RDD中,连接器将始终尝试在每个节点上本地执行对该RDD的操作。当您将RDD保存到Cassandra中时,连接器也会尝试将结果保存在本地。

假设您的数据已经在Cassandra集群中平衡。如果您的PartitionKey没有正确地完成,那么无论如何都会导致一个不平衡的集群。

 类似资料:
  • 我有一个工作,需要访问在HDFS上的拼花地板文件,我想最大限度地减少网络活动。到目前为止,我已经在相同的节点上启动了HDFS Datanodes和Spark Worker,但是当我启动作业时,数据位置总是在任何应该是NODE_LOCAL的地方,因为数据分布在所有节点中。 我是否应该配置任何选项来告诉Spark在数据所在的地方启动任务?

  • 如果我理解正确的话,在静态分配中,当Spark上下文在集群中的所有节点上创建时(在集群模式下),Spark应用程序将获取执行器。我有几个问题 > 如果在所有节点上都获得了执行器,并且在整个应用程序的持续时间内一直分配给这个应用程序,那么是否有很多节点都处于空闲状态? 在创建Spark上下文而不是在DagScheduler中时获取资源的优势是什么?我的意思是应用程序可以任意长,它只是保存资源。 我检

  • 我试图在K8上运行Spark,并在数据局部性方面有点挣扎。我正在使用原生的spark支持,但只是看了https://databricks.com/session/hdfs-on-kubernetes-lections-learned。我已经按照那里的步骤设置了我的HDFS集群(第一个k8节点上的namenode,使用主机网络)。我想知道是否有人知道对spark驱动程序的修正已经合并到主线spark

  • 一、简介 1.1 多数据源支持 Spark 支持以下六个核心数据源,同时 Spark 社区还提供了多达上百种数据源的读取方式,能够满足绝大部分使用场景。 CSV JSON Parquet ORC JDBC/ODBC connections Plain-text files 注:以下所有测试文件均可从本仓库的resources 目录进行下载 1.2 读数据格式 所有读取 API 遵循以下调用格式: