我有一些用例,我想更清楚一点,关于Kafka主题分区 - >火花流资源利用率.
我使用spark独立模式,所以我只有"执行器总数"和"执行器内存".据我所知并根据文档,将并行性引入Spark流的方法是使用分区的Kafka主题 - >当我使用spark-kafka直接流集成时,RDD将具有与kafka相同数量的分区.
因此,如果我在主题中有1个分区,并且有1个执行程序核心,那么该核心将从Kafka顺序读取.
如果我有:
主题中有2个分区,只有1个执行器核心?该核心将首先从一个分区读取,然后从第二个分区读取,因此分区主题没有任何好处吗?
主题中有2个分区和2个核心?然后1个执行器核心从1个分区读取,第二个核心从第二个分区读取吗?
1个kafka分区和2个执行器核心?
谢谢.
我们正在尝试从 Pentaho Kettle 迁移到 Apache AIrflow 来进行 ETL 并将所有数据处理集中在 1 个工具下。
我们每天使用Kettle从Postgres/Mysql数据库读取数据,并将数据移动到S3 -> Redshift。
做到这一点最简单的方法是什么?我没有看到可以直接执行此操作的操作员;那么我应该使用 MySQL/Postgres 运算符将数据放入本地文件中,并使用 S3 运算符将数据移动到 S3 吗?
谢谢
我有一个流处理过程,该过程从Kafka读取数据,使用Spark处理数据并将数据写入Cassandra。
这将在具有3-5个节点的群集上运行。我的计划是在集群的每个节点上部署spark,kafka和cassandra。
我想尽可能地强制执行数据局部性,这意味着每个Spark节点仅从该节点上的 Kafka读取数据,在本地进行处理(我的管道中没有改组转换),并在其中写入Cassandra该节点。
因此,我的问题如下:
1)为了将同一主题存储在多个节点上,是否需要对Kafka主题进行分区?
2)我是否需要同步(设置为相同)Kafka分区程序和Cassandra分区程序,以便确保在节点X上到达Kafka分区的数据一定会存储在同一节点的Cassandra中?
3)在Spark管道中还有其他需要特别注意的事情吗?我正在使用Spark-Cassandra连接器,该连接器应利用数据局部性(以便每个Spark任务读取存储在该特定节点上的数据)。
任何博客文章或文章解释了如何做到这一点都倍受赞赏。
问候,
Srdjan
cassandra apache-kafka apache-spark spark-streaming spark-cassandra-connector
我有一个Spark流传输过程,该过程将从kafka读取数据到DStream中。
在我的管道中,我做了两次(一个接一个):
DStream.foreachRDD(在RDD上转换并插入到目标中)。
(每次我进行不同的处理并将数据插入到不同的目的地)。
当我从Kafka读取数据后,我想知道DStream.cache是如何工作的吗?有可能做到吗?
现在该过程实际上是从Kafka读取数据两次吗?
请记住,不可能将两个foreachRDD放在一个中(因为两个路径完全不同,所以那里有状态转换-需要在DStream上应用...)
谢谢你的帮助