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
Scala 如何在SparkListener中使用数据帧?_Scala_Apache Spark - Fatal编程技术网

Scala 如何在SparkListener中使用数据帧?

Scala 如何在SparkListener中使用数据帧?,scala,apache-spark,Scala,Apache Spark,我已经编写了一个CustomListener(源自SparkListener等),它工作得很好,我可以截取度量。 问题是如何在侦听器本身中使用数据帧,因为这假设使用相同的Spark上下文,但是在2.1.x中,每个JVM只有1个上下文 假设我想用json向磁盘写入一些指标。不可能在ApplicationEnd中执行此操作,只能在最后一个jobEnd中执行(如果有多个作业,则在最后一个作业中执行) 这可能/可行吗 我试图测量作业/阶段/任务的性能,记录这些性能,然后以编程方式进行分析。也许这不是最好

我已经编写了一个CustomListener(源自SparkListener等),它工作得很好,我可以截取度量。 问题是如何在侦听器本身中使用数据帧,因为这假设使用相同的Spark上下文,但是在2.1.x中,每个JVM只有1个上下文

假设我想用json向磁盘写入一些指标。不可能在ApplicationEnd中执行此操作,只能在最后一个jobEnd中执行(如果有多个作业,则在最后一个作业中执行)

  • 这可能/可行吗
  • 我试图测量作业/阶段/任务的性能,记录这些性能,然后以编程方式进行分析。也许这不是最好的办法?!WebUI很好,但我需要让东西看起来像样些
  • 我可以在endJob事件时强制创建数据帧,但是会抛出一些错误(基本上它们指的是无法向侦听器传播事件),通常我希望避免不必要的操作。我想有一个干净的测量集,我可以记录和写入磁盘

  • SparkListener应该尽可能快,因为速度慢的SparkListener会阻止其他人接收事件。您可以使用单独的线程来释放主事件调度程序线程,但仍然受到每个JVM只有一个SparkContext的限制

    但是,这一限制很容易克服,因为您可以使用请求当前SparkContext

    不过,我不推荐这种架构。这给驱动程序的JVM带来了太大的压力,而JVM应该“关注”应用程序处理(而不是收集可能已经用于web UI和/或Spark History Server的事件)

    我宁愿使用Kafka或Cassandra或其他持久性存储来存储事件,并让其他处理应用程序使用它们(就像works一样)