Apache spark 如何使用spark同时处理多个文件

Apache spark 如何使用spark同时处理多个文件,apache-spark,apache-kafka,Apache Spark,Apache Kafka,我收到来自卡夫卡主题的文件名。当我收到一个文件名时 我现在正在做以下事情 在本地计算机上下载文件 在那台机器上启动一个satandalone spark作业 我在一台机器上运行10个这样的作业(64GB RAM) 我也有多个卡夫卡主题,因为上面的每个主题进程都在不同的机器上运行 现在我面临一些问题 当卡夫卡主题为空时,分配给该主题的机器保持空闲,而其他机器有太多事情要做 当我尝试创建一个包含所有机器的spark集群时,我无法做到这一点,因为我必须首先下载文件,并且该文件不是所有机器的本地文件,因

我收到来自卡夫卡主题的文件名。当我收到一个文件名时

我现在正在做以下事情

  • 在本地计算机上下载文件
  • 在那台机器上启动一个satandalone spark作业
  • 我在一台机器上运行10个这样的作业(64GB RAM)
  • 我也有多个卡夫卡主题,因为上面的每个主题进程都在不同的机器上运行

    现在我面临一些问题
  • 当卡夫卡主题为空时,分配给该主题的机器保持空闲,而其他机器有太多事情要做

  • 当我尝试创建一个包含所有机器的spark集群时,我无法做到这一点,因为我必须首先下载文件,并且该文件不是所有机器的本地文件,因为我没有将文件放入分布式文件系统(Hadoop)。这个问题有解决办法吗


  • 我可以创建一个更好的解决方案,使我的计算机不空闲,并且它们可以共享来自多个Kafka主题的工作负载吗?

    您好,您是否尝试使用文件流作为数据源?我的意思是,每个目录都包含卡夫卡主题发送给你的所有文件吗?创建文件的频率是多少(如果很低,可能不值得保留一个流媒体集群一整天)?更多信息,如果您不知道文件流输入:是的,每个目录都包含kafka主题中的文件。创建文件时,其名称将发送到kafka topic进行处理。对于每个主题,频率为每秒5-6个文件,文件大小压缩<150MB。谢谢。您是否尝试使用目录作为流的输入来实现管道(请参阅我的第一个问题的链接)?在我看来,它更人性化——特别是如果Kafka频繁地生成文件(您不会浪费集群资源),并且除了Spark可以找到的文件名之外,没有提供处理过程中所需的任何信息。你怎么认为?我忘记或误解了什么?我没有试过。首先我有一个问题,如果我尝试这个,我可以在一台spark机器上处理一个目录。正确的?这对spark cluster有效吗?文件源将从图片中删除Kafka,但如果目录被占用,spark machines将空闲,而其他目录中可能有文件。它应该在集群中工作。对于“空闲”,这就是重点。如果您有/main_dir/dir_topic_1、/main_dir/dir_topic_2等目录,您应该能够使用通配符/main_dir/*作为源来读取所有嵌套文件。这样节点就不会空闲。您只需模仿目录树并编写简单的结构化流媒体管道,就可以在本地主机中进行尝试。它会给你一个想法。从这里开始,将其部署到分布式环境并进行测试只需一小步。