给定以下数据集:
| title | start | end
| bla | 10 | 30
我想找出两个数字之间的差异(开始-结束),并将它们设置到一个新的列中,使其看起来像:
| title | time_spent |
| bla | 20 |
数据类型为
Dataset dataset = dataset.withColumn("millis spent: ", col("end") - col("start")).as("Time spent");
正如我在这个问题中看到的那样,我希望它能工作,但它确实工作了,可能是因为线程是关于Dataframe而不是数据集的,或者可能是因为scala允许它在java中的非法位置工作?
1条答案
按热度按时间ebdffaop1#
您可以考虑静态方法。简而言之:
package net.jgp.books.sparkInAction.ch12.lab990Others;
import static org.apache.spark.sql.functions.expr;
import java.util.ArrayList;
import java.util.List;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.RowFactory;
import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.types.DataTypes;
import org.apache.spark.sql.types.StructField;
import org.apache.spark.sql.types.StructType;
/**
*/
public class ExprApp {
/**
*/
public static void main(String[] args) {
ExprApp app = new ExprApp();
app.start();
}
/**
*/
private void start() {
// Creates a session on a local master
SparkSession spark = SparkSession.builder()
.appName("All joins!")
.master("local")
.getOrCreate();
}
}