现在,我正在尝试用 Kotlin 重写我的 java 应用程序。然后,我遇到了日志语句,比如
log.info("do the print thing for {}", arg);
Run Code Online (Sandbox Code Playgroud)
所以我有两种方法可以在 Kotlin 中执行日志操作,例如log.info("do the print thing for {}", arg)和log.info("do the print thing for $arg")。第一个是 Slf4j 或 Log4j 等框架的委托格式;第二个是使用 Kotlin 字符串模板。
那么它们有什么区别,哪个性能更好呢?
我有多年的 Java 8 及其 lambda 经验。但当我开发一个 hello-world 大小的 Spark 程序时,我遇到了一个疯狂的问题。
这里我有一个Java类,其中的Data注释来自Lombok:
@Data
public class Person implements Serializable {
private String name;
private Long age;
}
Run Code Online (Sandbox Code Playgroud)
然后我构建了一个包含Persion类对象的 java 列表:
Person p1 = new Person("sb", 1L);
Person p2 = new Person("sth", null);
List<Person> list = new ArrayList<>(2);
list.add(p1);
list.add(p2);
Run Code Online (Sandbox Code Playgroud)
到目前为止一切都很好。然后我尝试使用该列表生成 Spark 数据集:
SparkSession session = SparkSession.builder().master("local[1]").appName("SparkSqlApp").getOrCreate();
Encoder<Person> personEncoder = Encoders.bean(Person.class);
Dataset<Person> dataset1 = session.createDataset(list, personEncoder);
dataset1.foreach(new ForeachFunction<Person>() { // 1
@Override
public void call(Person person) throws Exception {
System.out.println(person);
} …Run Code Online (Sandbox Code Playgroud)