Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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 如何在pyspark流媒体应用程序中使用两个主题不同的流将数据从Kafka存储到Redis?_Apache Spark_Redis_Apache Kafka_Pyspark_Spark Streaming - Fatal编程技术网

Apache spark 如何在pyspark流媒体应用程序中使用两个主题不同的流将数据从Kafka存储到Redis?

Apache spark 如何在pyspark流媒体应用程序中使用两个主题不同的流将数据从Kafka存储到Redis?,apache-spark,redis,apache-kafka,pyspark,spark-streaming,Apache Spark,Redis,Apache Kafka,Pyspark,Spark Streaming,我有一个pyspark应用程序,它配置了2个数据流: 数据流A)阅读卡夫卡(主题1和主题2)->合并主题dstream->do stuff->输出到REDIS 数据流B)阅读卡夫卡(主题3、4和5)->合并主题数据流->制作素材->输出到同一个REDIS 我只能在配置了REDIS中的一个时才能在REDIS中获取数据,但不能同时配置两个 实际上,即使我将REDIS输出更改为pprint,也会发生这种情况。我只在两个流中只有一个处于活动状态时才打印输出 我缺少什么?您是否正在尝试加入2个数据流?我是

我有一个pyspark应用程序,它配置了2个数据流:

数据流A)阅读卡夫卡(主题1和主题2)->合并主题dstream->do stuff->输出到REDIS

数据流B)阅读卡夫卡(主题3、4和5)->合并主题数据流->制作素材->输出到同一个REDIS

我只能在配置了REDIS中的一个时才能在REDIS中获取数据,但不能同时配置两个

实际上,即使我将REDIS输出更改为pprint,也会发生这种情况。我只在两个流中只有一个处于活动状态时才打印输出


我缺少什么?

您是否正在尝试加入2个数据流?我是说,第一个流点指向返回(K,V)的topicA,第二个流点监视返回(K,V1)的topicB。如果是,则可以使用join()方法连接2个数据流,该方法将返回(K(V,V1))


或者您希望在创建流(KafkaUtils.createStream())时传递TopicA、TopicB,然后将(K,V)后跟(K,V1)插入Redis?

问题在于可用的执行线程数

Spark文档说每个接收器都使用一个专用线程来获取数据。我在本地模式下运行这个应用程序,主url为“local[*]”,这给了我4个线程,因为我的电脑有4个内核

由于我的应用程序配置了5个不同的卡夫卡主题来读取,我需要至少6个线程(驱动程序为5+1)来运行我的程序。因为我只有4个,并且数据流被合并到下游,所以计算永远不会开始

解决方案:
MASTER\u URL=local[10]