Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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
Java 当线程被卡住时,终止线程中运行的火花动作_Java_Multithreading_Dataframe_Apache Spark_Caching - Fatal编程技术网

Java 当线程被卡住时,终止线程中运行的火花动作

Java 当线程被卡住时,终止线程中运行的火花动作,java,multithreading,dataframe,apache-spark,caching,Java,Multithreading,Dataframe,Apache Spark,Caching,我有一个java程序,它在单独的线程上使用spark将配置单元表缓存到内存中。此线程定期触发。 但有时,在缓存后运行操作(计数)(当实际缓存发生时)时,作业会被卡住 如果此操作被卡住,我想取消/终止/停止此操作 我正试图找出如何做以下两件事之一: 如果需要10分钟以上,请终止此操作 或者在下次再次触发线程时终止此操作(因为线程是周期性触发的) 下面是我的代码: public class MyThread extends Thread { public void run(SparkSes

我有一个java程序,它在单独的线程上使用spark将配置单元表缓存到内存中。此线程定期触发。 但有时,在缓存后运行操作(计数)(当实际缓存发生时)时,作业会被卡住

如果此操作被卡住,我想取消/终止/停止此操作

我正试图找出如何做以下两件事之一:

  • 如果需要10分钟以上,请终止此操作
  • 或者在下次再次触发线程时终止此操作(因为线程是周期性触发的)
  • 下面是我的代码:

    public class MyThread extends Thread {
    
        public void run(SparkSession spark) {
    
            Dataset<Row> dataset = spark.sql("select * from db.table");
            dataset.cache();
    
            // This is where job gets stuck sometimes. I want to kill/cancel this
            long count = dataset.count();
    
            System.out.println("Count = " + count);
    
        }
    }
    
    公共类MyThread扩展线程{
    公共无效运行(SparkSession spark){
    Dataset Dataset=spark.sql(“从db.table中选择*);
    dataset.cache();
    //这就是工作有时被卡住的地方。我想结束/取消这个
    long count=dataset.count();
    System.out.println(“Count=“+Count”);
    }
    }
    
    由于内存问题,您的线程被卡住,您正在使用
    缓存()
    方法将数据保存到内存中(
    仅内存

    1:尝试使用
    persist(StorageLevel)
    可以根据level指定的缓存策略在内存、磁盘或堆外内存中缓存

    2:如果您使用spark submit运行作业,请在提交作业时增加以下参数

    --num-executors 
    --executor-cores  
    --executor-memory 
    --driver-memory 
    

    解决这个问题。。。。。。