Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.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_Apache Spark - Fatal编程技术网

Java 并行写入多个拼花文件

Java 并行写入多个拼花文件,java,apache-spark,Java,Apache Spark,我有一个大的SparkDataSet(Java)&我需要应用过滤器来获取多个数据集,并将每个数据集写入一个拼花地板 Java Spark是否提供了可以并行写入所有拼花地板文件的功能?我试着避免它,按顺序做 另一个选项是使用JavaThread,还有其他方法吗?Spark将自动并行写入拼花地板文件。它还取决于您提供了多少executor核心以及数据帧的分区数。您可以尝试使用df.write.parquet(“/location/to/hdfs”)并查看写入的时间。Spark将自动并行写入拼花文件。

我有一个大的Spark
DataSet
(Java)&我需要应用过滤器来获取多个数据集,并将每个数据集写入一个拼花地板

Java Spark是否提供了可以并行写入所有拼花地板文件的功能?我试着避免它,按顺序做


另一个选项是使用Java
Thread
,还有其他方法吗?

Spark将自动并行写入拼花地板文件。它还取决于您提供了多少executor核心以及数据帧的分区数。您可以尝试使用
df.write.parquet(“/location/to/hdfs”)
并查看写入的时间。

Spark将自动并行写入拼花文件。它还取决于您提供了多少executor核心以及数据帧的分区数。您可以尝试使用
df.write.parquet(“/location/to/hdfs”)
并查看写入时间。

默认情况下,Spark使用Spark执行器提供并行性,但如果您也想在驱动程序上实现并行性,则可以执行以下操作:

import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;

import java.util.ArrayList;
import java.util.List;

public class ParallelSparkWrite {

    public static void main(String[] args) {
        SparkSession spark = Constant.getSparkSess();

        Dataset<Row> ds = spark.read().json("input/path");

        List<String> filterValue = new ArrayList<>();

        //Create a parallel stream
        filterValue.parallelStream()
                .forEach(filter -> {
                    //Filter your DataSet and write in parallel 
            ds.filter(ds.col("col1").equalTo(filter)).write().json("/output/path/"+filter+".json");
        });


    }
}

import org.apache.spark.sql.Dataset;
导入org.apache.spark.sql.Row;
导入org.apache.spark.sql.SparkSession;
导入java.util.ArrayList;
导入java.util.List;
公共类并行SparkWrite{
公共静态void main(字符串[]args){
SparkSession spark=Constant.getSparkess();
数据集ds=spark.read().json(“输入/路径”);
List filterValue=new ArrayList();
//创建并行流
filterValue.parallelStream()
.forEach(过滤器->{
//过滤数据集并并行编写
ds.filter(ds.col(“col1”).equalTo(filter)).write().json(“/output/path/”+filter+”.json”);
});
}
}

默认情况下,Spark使用Spark执行器提供并行性,但如果您也想在驱动程序上实现并行性,则可以执行以下操作:

import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;

import java.util.ArrayList;
import java.util.List;

public class ParallelSparkWrite {

    public static void main(String[] args) {
        SparkSession spark = Constant.getSparkSess();

        Dataset<Row> ds = spark.read().json("input/path");

        List<String> filterValue = new ArrayList<>();

        //Create a parallel stream
        filterValue.parallelStream()
                .forEach(filter -> {
                    //Filter your DataSet and write in parallel 
            ds.filter(ds.col("col1").equalTo(filter)).write().json("/output/path/"+filter+".json");
        });


    }
}

import org.apache.spark.sql.Dataset;
导入org.apache.spark.sql.Row;
导入org.apache.spark.sql.SparkSession;
导入java.util.ArrayList;
导入java.util.List;
公共类并行SparkWrite{
公共静态void main(字符串[]args){
SparkSession spark=Constant.getSparkess();
数据集ds=spark.read().json(“输入/路径”);
List filterValue=new ArrayList();
//创建并行流
filterValue.parallelStream()
.forEach(过滤器->{
//过滤数据集并并行编写
ds.filter(ds.col(“col1”).equalTo(filter)).write().json(“/output/path/”+filter+”.json”);
});
}
}

那太好了,我不知道。如果这回答了你的问题,请接受它作为答案,或者让我知道那太好了,我不知道。如果这回答了你的问题,请接受它作为答案,或者让我知道它是否值得?是的,如果需要,我们可以使用空闲驱动程序内核在ScalaInteresting中使用ForkPool,我需要考虑一下。Par熟悉,但无论我在哪里工作,它保持简单。值得吗?是的,我们可以利用闲置驱动核心(S),如果需要使用FurkPoin在SaaLaLoad,需要考虑一下。熟悉,但无论我在哪里工作,都要保持简单。