This问题的答案与如何在YARN集群上执行此操作相关。但是如果我运行的是独立的spark集群呢?如何从执行器进行日志记录?使用log4j日志记录器(我们可以从spark-context中派生),从驱动程序进行日志记录很容易。但是我如何从RDD的foreach或foreachPartition中记录日志呢?有没有什么方法可以收集这些日志并打印出来?
foreach
foreachPartition
wlzqhblo1#
解决方法是导入python日志并使用日志写入消息,日志消息将位于spark安装位置下创建的工作目录中没有其他需要的了我疯狂地修改log4j.properties文件,并添加驱动程序-java-选项和spakrk。在您的spark程序中,导入日志记录直接添加日志消息作为logging.warning(无论您要检查的消息和变量值是什么)然后,如果您导航到工作目录-如果我在/home/vagrant/spark中安装了spark,那么我们将讨论/home/vagrant/spark/work目录每个应用程序都有一个目录。用于应用程序的工作进程将具有编号0、1、2、3等。你必须检查每个工人。无论在stderr中创建了哪个工作线程来执行任务,您都将看到日志消息希望这有助于在使用spark独立集群模式时查看用户在执行程序上记录的消息
1条答案
按热度按时间wlzqhblo1#
解决方法是导入python日志并使用日志写入消息,日志消息将位于spark安装位置下创建的工作目录中
没有其他需要的了
我疯狂地修改log4j.properties文件,并添加驱动程序-java-选项和spakrk。
在您的spark程序中,导入日志记录直接添加日志消息作为logging.warning(无论您要检查的消息和变量值是什么)
然后,如果您导航到工作目录-如果我在/home/vagrant/spark中安装了spark,那么我们将讨论/home/vagrant/spark/work目录
每个应用程序都有一个目录。
用于应用程序的工作进程将具有编号0、1、2、3等。
你必须检查每个工人。
无论在stderr中创建了哪个工作线程来执行任务,您都将看到日志消息
希望这有助于在使用spark独立集群模式时查看用户在执行程序上记录的消息