小编st.*_*err的帖子

lambda表达式与实例化方法引用之间的不同行为

据我所知,lambda表达式可以被方法引用替换而没有任何问题.我的IDE说的相同,但下面的例子显示了相反的情况.方法引用清楚地返回相同的对象,其中lambda表达式每次都返回新对象.

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Instance {

    int member;

    Instance set(int value){
        this.member = value;
        return this;
    }

    @Override
    public String toString() {
        return member + "";
    }

    public static void main(String[] args) {

        Stream<Integer> stream1 = Stream.of(1, 2, 3, 4);
        Stream<Integer> stream2 = Stream.of(1, 2, 3, 4);

        List<Instance> collect1 = stream1.map(i -> new Instance().set(i)).collect(Collectors.toList());
        List<Instance> collect2 = stream2.map(new Instance()::set).collect(Collectors.toList());

        System.out.println(collect1);
        System.out.println(collect2);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的输出:

[1, 2, 3, 4]
[4, 4, 4, 4]
Run Code Online (Sandbox Code Playgroud)

java lambda java-stream method-reference

7
推荐指数
2
解决办法
142
查看次数

Spark.read.csv() 是操作还是转换

Bill在《Spark权威指南》一书中说,阅读是一种转变,而且是一种狭义的转变,

现在,如果我运行下面的 Spark 代码并尝试查看 Spark UI,我会看到创建的作业 df = spark.read.csv("path/to/file")

现在根据我的理解,工作是一个被称为的动作。另外,如果我在读取 CSV 时尝试输入一些选项,我会在 Spark UI 中看到另外一项作业,因此,例如,如果我们运行以下代码,则 Spark UI 中会有 2 个作业 df = spark.read.option("inferSchema", "true").csv("path/to/file")

所以我的问题是,如果spark.read这是一种转变,为什么它会创造就业机会?

python apache-spark pyspark

7
推荐指数
1
解决办法
5905
查看次数