在Scala中作为可选函数参数传递数据帧
有没有一种方法可以将数据帧作为Scala中的可选输入函数参数传递? 例:在Scala中作为可选函数参数传递数据帧,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,有没有一种方法可以将数据帧作为Scala中的可选输入函数参数传递? 例: 虽然我在这里传递的是一个有效的数据帧,但它总是分配给一个空的数据帧,我如何避免这种情况?是的,您可以将数据帧作为参数传递给函数 假设您有一个dataframeas import sqlContext.implicits._ val df = Seq( (1, 2, 3), (1, 2, 3) ).toDF("col1", "col2", "col3") 那是 +----+----+----+ |col1|col
虽然我在这里传递的是一个有效的数据帧,但它总是分配给一个空的数据帧,我如何避免这种情况?是的,您可以将
数据帧作为参数传递给函数
假设您有一个dataframe
as
import sqlContext.implicits._
val df = Seq(
(1, 2, 3),
(1, 2, 3)
).toDF("col1", "col2", "col3")
那是
+----+----+----+
|col1|col2|col3|
+----+----+----+
|1 |2 |3 |
|1 |2 |3 |
+----+----+----+
您可以将其传递给如下函数
import org.apache.spark.sql.DataFrame
def test(sampleDF: DataFrame): DataFrame = {
sampleDF.select("col1", "col2") //doing some operation in dataframe
}
val testdf = test(df)
testdf
将
+----+----+
|col1|col2|
+----+----+
|1 |2 |
|1 |2 |
+----+----+
已编辑
正如eliasah指出的,@Garipaso需要可选参数。这可以通过将函数定义为
def test(sampleDF: DataFrame = sqlContext.emptyDataFrame): DataFrame = {
if(sampleDF.count() > 0) sampleDF.select("col1", "col2") //doing some operation in dataframe
else sqlContext.emptyDataFrame
}
如果我们将有效的数据帧作为
test(df).show(false)
它将给出如下输出:
+----+----+
|col1|col2|
+----+----+
|1 |2 |
|1 |2 |
+----+----+
但如果我们不把论点当作
test().show(false)
我们将得到空的数据帧作为
++
||
++
++
我希望答案是有用的这甚至不应该编译。(撇开函数主体不谈)您刚刚为函数设置了一个默认参数,如果您将一个有效的数据帧传递给test
,它应该可以工作。为什么在这里使用df.test
?什么是df
?Hi@RameshMaharjan,关于性能和默认行为:它是副本还是参考?(就像“数组作为参数”的经典问题一样,当处理引用或处理所有数据的成本很低或很高时,clair永远不会出现)
++
||
++
++