将 RDD 作为参数和 return 数据帧传递给函数 - scala
pass RDD as parameter and return dataframe to a function - scala
我正在尝试创建将字符串或 RDD 作为参数但 returns 数据帧的函数。
代码:
def udf1 (input: String) = {
val file = sc.textFile(input);
file.map(p => Person(
(p.substring(1, 15)),
p.substring(16, 20))).toDF()
}
def main() {
case class Person(id: String, name: String)
val df1 = udf1 ("hdfs:\")
}
但它总是返回 rdd。有什么建议吗?
不确定您的代码为何无法正常工作,但良好的 Scala
形式将包括指定 return 类型:
scala> case class Person(id: Int)
defined class Person
scala> def udf1(fName: String): DataFrame = {
| val file = sc.textFile(fName)
| file.map(p => Person(p.toInt)).toDF()
| }
udf1: (fName: String)org.apache.spark.sql.DataFrame
scala> val df = udf1("file.txt")
df: org.apache.spark.sql.DataFrame = [id: int]
我正在尝试创建将字符串或 RDD 作为参数但 returns 数据帧的函数。
代码:
def udf1 (input: String) = {
val file = sc.textFile(input);
file.map(p => Person(
(p.substring(1, 15)),
p.substring(16, 20))).toDF()
}
def main() {
case class Person(id: String, name: String)
val df1 = udf1 ("hdfs:\")
}
但它总是返回 rdd。有什么建议吗?
不确定您的代码为何无法正常工作,但良好的 Scala
形式将包括指定 return 类型:
scala> case class Person(id: Int)
defined class Person
scala> def udf1(fName: String): DataFrame = {
| val file = sc.textFile(fName)
| file.map(p => Person(p.toInt)).toDF()
| }
udf1: (fName: String)org.apache.spark.sql.DataFrame
scala> val df = udf1("file.txt")
df: org.apache.spark.sql.DataFrame = [id: int]