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