scala—我们如何看待同一函数的不同实现

rdrgkggo  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(382)

我想了解在spark scala中如何实现相同方法的不同。

def createDataFrame[A <: Product](data: Seq[A])(implicit evidence$3: reflect.runtime.universe.TypeTag[A]): org.apache.spark.sql.DataFrame
def createDataFrame(rdd: org.apache.spark.api.java.JavaRDD[_],beanClass: Class[_]): org.apache.spark.sql.DataFrame
def createDataFrame(rowRDD: org.apache.spark.api.java.JavaRDD[org.apache.spark.sql.Row],schema: org.apache.spark.sql.types.StructType): org.apache.spark.sql.DataFr
ame
def createDataFrame(data: java.util.List[_],beanClass: Class[_]): org.apache.spark.sql.DataFrame
def createDataFrame(rows: java.util.List[org.apache.spark.sql.Row],schema: org.apache.spark.sql.types.StructType): org.apache.spark.sql.DataFrame
def createDataFrame(rdd: org.apache.spark.rdd.RDD[_],beanClass: Class[_]): org.apache.spark.sql.DataFrame
def createDataFrame[A <: Product](rdd: org.apache.spark.rdd.RDD[A])(implicit evidence$2: reflect.runtime.universe.TypeTag[A]): org.apache.spark.sql.DataFrame
def createDataFrame(rowRDD: org.apache.spark.rdd.RDD[org.apache.spark.sql.Row],schema: org.apache.spark.sql.types.StructType): org.apache.spark.sql.DataFrame

下面是createdataframe方法的不同实现?同一个方法createdataframe如何可以接受不同的参数,而输出是相同的-dataframe?

tuwxkamq

tuwxkamq1#

这是scala语言的一个特性,类似的特性在许多其他语言中都可用,如java、c++等。
此功能称为方法重载,其工作原理如下:

def myMethod(a:Int,b:Int) = a + b

def myMethod(a:String,B:String) = a + " " + b  

myMethod(1,2) //-----> returns 3, first method is called

myMethod("Hello","world")  //-----> returns "Hello World", second method is called

方法重载的一般规则:
所有方法的名称应该相同
参数数/参数类型或两者在所有同名方法中必须是唯一的
在这里 createDataFrame 函数多次重载,以适应用于创建Dataframe的不同场景,从而支持多个源。如果您仔细查看源代码,您将发现您突出显示的那些方法中没有一个具有相同的方法签名。

相关问题