Apache spark Spark SQL-如何添加两列值

Apache spark Spark SQL-如何添加两列值,apache-spark,dataframe,pyspark,apache-spark-sql,Apache Spark,Dataframe,Pyspark,Apache Spark Sql,如何在spark sql中添加一个或多个列 在甲骨文,我们正在做 select name, (mark1+mark2+mark3) as total from student 我在spark sql中寻找相同的操作。如果您将dataframe注册为临时表(例如,通过createOrReplaceTempView()),那么您指定的sql语句将完全相同 如果改用DataFrame API,则定义了各种运算符,包括加法。在代码中,它看起来像这样: val df = Seq( (1,2), (3,4

如何在spark sql中添加一个或多个列

在甲骨文,我们正在做

select name, (mark1+mark2+mark3) as total from student

我在spark sql中寻找相同的操作。

如果您将dataframe注册为临时表(例如,通过
createOrReplaceTempView()
),那么您指定的sql语句将完全相同

如果改用DataFrame API,则定义了各种运算符,包括加法。在代码中,它看起来像这样:

val df = Seq( (1,2), (3,4), (5,6) ).toDF("c1", "c2")
df.withColumn( "c3", $"c1" + $"c2" ).show

如果将dataframe注册为临时表(例如,通过
createOrReplaceTempView()
),则指定的SQL语句将完全相同

如果改用DataFrame API,则定义了各种运算符,包括加法。在代码中,它看起来像这样:

val df = Seq( (1,2), (3,4), (5,6) ).toDF("c1", "c2")
df.withColumn( "c3", $"c1" + $"c2" ).show

您可以使用Column函数执行此操作。 如果列是数字,则可以直接添加它们

df.withColumn('total','mark1'+'mark2'+'mark3')
如果列是
string
并希望
concat
它们

导入pyspark.sql.F函数
df.withColumn('total',F.concat('mark1','mark2','mark3'))

您可以使用column功能来执行
。
如果列是数字,则可以直接添加它们

df.withColumn('total','mark1'+'mark2'+'mark3')
如果列是
string
并希望
concat
它们

导入pyspark.sql.F函数
df.withColumn('total',F.concat('mark1','mark2','mark3'))

这在Spark中应该可以正常工作。有什么问题吗?这在Spark中应该可以正常工作。问题是什么?您的
concat
是正确的,但是对于
df.withColumn('total','mark1'+'mark2'+'mark3')
spark如何知道
mark1
是一列?(您应该使用pyspark.sql中的
df.mark1
函数导入col col('mark1')+col('mark2')+col('mark3')
。对吗?您的
concat
是正确的,但是对于
df.withColumn('total',mark1'+'mark2'+'mark3')
spark如何知道
mark1
是一列?(您应该使用pyspark.sql中的
df.mark1
。函数导入col col('mark1')+col('mark2')+col('mark3')
。对吗?