Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.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 如何在rdd操作中读取数据帧_Java_Apache Spark_Spark Dataframe_Cartesian Product - Fatal编程技术网

Java 如何在rdd操作中读取数据帧

Java 如何在rdd操作中读取数据帧,java,apache-spark,spark-dataframe,cartesian-product,Java,Apache Spark,Spark Dataframe,Cartesian Product,情景 我有两个包含文本文件路径的字符串列表,列表a和列表b。 我想对列表a,b的笛卡尔积进行比较,以实现笛卡尔数据帧 我尝试的方法是先做笛卡尔积, 将其传输到pairdd,然后在foreach apply操作中执行 List<String> a = Lists.newList("/data/1.text",/data/2.text","/data/3.text"); List<String> b = Lists.newList("/data/4.text",/data

情景 我有两个包含文本文件路径的字符串列表,列表a和列表b。 我想对列表a,b的笛卡尔积进行比较,以实现笛卡尔数据帧

我尝试的方法是先做笛卡尔积, 将其传输到pairdd,然后在foreach apply操作中执行

 List<String> a = Lists.newList("/data/1.text",/data/2.text","/data/3.text");
 List<String> b = Lists.newList("/data/4.text",/data/5.text","/data/6.text");

JavaSparkContext jsc = new JavaSparkContext(spark.sparkContext());
List<Tuple2<String,String>> cartesian = cartesian(a,b);
jsc.parallelizePairs(cartesian).filter(new Function<Tuple2<String, String>, Boolean>() {
        @Override public Boolean call(Tuple2<String, String> tup) throws Exception {
            Dataset<Row> text1 = spark.read().text(tup._1); <-- this throw NullPointerException
            Dataset<Row> text2 = spark.read().text(tup._2);
            return text1.first()==text2.first(); <-- this is an indicative function only
        });
List a=Lists.newList(“/data/1.text”、/data/2.text”、“/data/3.text”);
列表b=Lists.newList(“/data/4.text”、/data/5.text”、“/data/6.text”);
JavaSparkContext jsc=新的JavaSparkContext(spark.sparkContext());
列表笛卡尔=笛卡尔(a,b);
parallelizePairs(笛卡尔).filter(新函数(){
@重写公共布尔调用(Tuple2 tup)引发异常{

数据集text1=spark.read().text(tup._1);不确定我是否完全理解您的问题。下面是使用spark和Java的笛卡尔示例

public class CartesianDemo {
public static void main(String[] args) {
    SparkConf conf = new SparkConf().setAppName("CartesianDemo").setMaster("local");
    JavaSparkContext jsc = new JavaSparkContext(conf);
    //list
    List<String> listOne = Arrays.asList("one", "two", "three", "four", "five");
    List<String> listTwo = Arrays.asList("ww", "xx", "yy", "zz");
    //RDD
    JavaRDD<String> rddOne = jsc.parallelize(listOne);
    JavaRDD<String> rddTwo = jsc.parallelize(listTwo);
    //Cartesian
    JavaPairRDD<String, String> cartesianRDD = rddOne.cartesian(rddTwo);
    //print
    cartesianRDD.foreach(data -> {
        System.out.println("X=" + data._1() + " Y=" + data._2());
    });
    //stop
    jsc.stop();
    jsc.close();
  }
}
公共类CartesianDemo{
公共静态void main(字符串[]args){
SparkConf conf=new SparkConf().setAppName(“CartesianDemo”).setMaster(“local”);
JavaSparkContext jsc=新的JavaSparkContext(conf);
//名单
listOne=Arrays.asList(“一”、“二”、“三”、“四”、“五”);
listwo=Arrays.asList(“ww”、“xx”、“yy”、“zz”);
//RDD
JavaRDD rddOne=jsc.parallelize(listOne);
javarddrddtwo=jsc.parallelize(listTwo);
//笛卡尔
javapairdd cartesianRDD=rddOne.cartesian(rddTwo);
//印刷品
cartesianRDD.foreach(数据->{
System.out.println(“X=“+data.\u 1()+”Y=“+data.\u 2());
});
//停止
jsc.stop();
jsc.close();
}
}

不确定我是否完全理解您的问题。以下是使用Spark和Java的笛卡尔示例

public class CartesianDemo {
public static void main(String[] args) {
    SparkConf conf = new SparkConf().setAppName("CartesianDemo").setMaster("local");
    JavaSparkContext jsc = new JavaSparkContext(conf);
    //list
    List<String> listOne = Arrays.asList("one", "two", "three", "four", "five");
    List<String> listTwo = Arrays.asList("ww", "xx", "yy", "zz");
    //RDD
    JavaRDD<String> rddOne = jsc.parallelize(listOne);
    JavaRDD<String> rddTwo = jsc.parallelize(listTwo);
    //Cartesian
    JavaPairRDD<String, String> cartesianRDD = rddOne.cartesian(rddTwo);
    //print
    cartesianRDD.foreach(data -> {
        System.out.println("X=" + data._1() + " Y=" + data._2());
    });
    //stop
    jsc.stop();
    jsc.close();
  }
}
公共类CartesianDemo{
公共静态void main(字符串[]args){
SparkConf conf=new SparkConf().setAppName(“CartesianDemo”).setMaster(“local”);
JavaSparkContext jsc=新的JavaSparkContext(conf);
//名单
listOne=Arrays.asList(“一”、“二”、“三”、“四”、“五”);
listwo=Arrays.asList(“ww”、“xx”、“yy”、“zz”);
//RDD
JavaRDD rddOne=jsc.parallelize(listOne);
javarddrddtwo=jsc.parallelize(listTwo);
//笛卡尔
javapairdd cartesianRDD=rddOne.cartesian(rddTwo);
//印刷品
cartesianRDD.foreach(数据->{
System.out.println(“X=“+data.\u 1()+”Y=“+data.\u 2());
});
//停止
jsc.stop();
jsc.close();
}
}

我知道cartesian,如果您注意到,我已经在示例中说明了这一点。问题是运行sparkSession.read()在foreach函数中。这将不起作用,并将引发NPE。您可以在SO中发现类似的问题。您可以使用Dataset.join方法获取Cartesian,然后可以调用过滤器。我了解Cartesian,如果您注意到,我已经将其放在示例中。该问题正在运行sparkSession.read()在foreach函数内部。这将不起作用,并将抛出NPE。您可以在SO中发现类似的问题。您可以使用Dataset.join方法获取笛卡尔坐标,然后可以对其调用筛选器。没有理由执行
jsc.parallelizePairs(笛卡尔坐标)
。直接迭代
笛卡尔
集合。没有理由执行
jsc.parallelizePairs(笛卡尔)
。直接迭代
笛卡尔
集合。