Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 如何单独处理Kafka分区并与Spark执行器并行处理?_Apache Spark_Apache Spark Sql_Spark Structured Streaming_Apache Spark Standalone - Fatal编程技术网

Apache spark 如何单独处理Kafka分区并与Spark执行器并行处理?

Apache spark 如何单独处理Kafka分区并与Spark执行器并行处理?,apache-spark,apache-spark-sql,spark-structured-streaming,apache-spark-standalone,Apache Spark,Apache Spark Sql,Spark Structured Streaming,Apache Spark Standalone,我使用Spark 2.1.1 我使用结构化流媒体从2个Kafka分区读取消息。我正在向Spark Standalone cluster提交我的应用程序,其中有一个工作线程和两个执行线程(每个线程有两个内核) 我想要的功能是,来自每个Kafka分区的消息应该由每个单独的执行者独立处理。但是现在的情况是,执行器分别读取和映射分区数据,但是在映射完之后,通常会使用所形成的无界表,并且两个分区都有数据 当我在表上运行结构化查询时,查询必须处理来自两个分区的数据(更多的数据) 选择产品id、最大(smr.

我使用Spark 2.1.1

我使用结构化流媒体从2个Kafka分区读取消息。我正在向Spark Standalone cluster提交我的应用程序,其中有一个工作线程和两个执行线程(每个线程有两个内核)

我想要的功能是,来自每个Kafka分区的消息应该由每个单独的执行者独立处理。但是现在的情况是,执行器分别读取和映射分区数据,但是在映射完之后,通常会使用所形成的无界表,并且两个分区都有数据

当我在表上运行结构化查询时,查询必须处理来自两个分区的数据(更多的数据)

选择产品id、最大(smr.订单时间)、最大(产品价格)、最小(产品价格)
从订单记录
按窗口分组(订单时间,“120秒”),产品id
其中Kafka分区位于
Product\u id

是否有任何方法可以从执行器映射到的Kafka分区并行但单独地对数据运行相同的结构化查询

但是现在的情况是,执行器分别读取和映射分区数据,但是在映射完之后,通常会使用所形成的无界表,并且两个分区都有数据。因此,当我在表上运行结构化查询时,查询必须处理来自两个分区的数据(更多的数据)

这是理解可以执行什么以及如何执行的关键,而不会导致混乱和跨分区(甚至可能通过网络)发送数据

最终答案取决于您的查询内容。如果它们处理记录组,其中组分布在多个主题分区上,因此在两个不同的Spark执行器上,则必须格外小心算法/转换,以便在单独的分区上进行处理(仅使用分区中可用的内容)并仅聚合结果

但是现在的情况是,执行器分别读取和映射分区数据,但是在映射完之后,通常会使用所形成的无界表,并且两个分区都有数据。因此,当我在表上运行结构化查询时,查询必须处理来自两个分区的数据(更多的数据)

这是理解可以执行什么以及如何执行的关键,而不会导致混乱和跨分区(甚至可能通过网络)发送数据


最终答案取决于您的查询内容。如果它们处理的记录组分布在多个主题分区上,因此在两个不同的Spark执行器上,则必须格外小心算法/转换,以便在单独的分区上进行处理(仅使用分区中可用的内容)并仅聚合结果。

如何检查“执行器分别读取和.map分区数据,但在映射形成的无界表之后,通常会使用这些表,并且两个分区都有数据。”?你看执行计划了吗?你能粘贴它吗?你还用什么来声明该语句?当我打印exe.plan时,它显示“没有物理计划”“。打印计数查询输出时看到的内容;它显示跨分区的记录总数。我们不需要跨分区对整合数据执行查询。我们需要的是独立处理较小的数据集。e、 g.Kafka分区-P1,P2 P1包含产品1到10 P2包含产品11到20当我们运行Spark streaming的两个执行器时,我们希望对每个10条记录的单个数据集进行操作。您如何检查“执行器分别读取和.map分区数据,但在映射形成的无界表之后,通常会使用这些表,并且两个分区都有数据。”?你看执行计划了吗?你能粘贴它吗?你还用什么来声明该语句?当我打印exe.plan时,它显示“没有物理计划”“。打印计数查询输出时看到的内容;它显示跨分区的记录总数。我们不需要跨分区对整合数据执行查询。我们需要的是独立处理较小的数据集。e、 g.Kafka分区-P1,P2 P1包含产品1到10 P2包含产品11到20当我们运行Spark streaming的两个执行器时,我们希望对每个10条记录的单个数据集进行操作。
./bin/spark-submit \
  --class MyClass \
  --master spark://HOST:IP \
  --deploy-mode cluster \
  /home/ApplicationSpark.jar