use*_*122 0 scala apache-spark apache-spark-sql
我正在尝试创建将字符串或 RDD 作为参数但返回数据帧的函数。
代码:
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:\\")
}
Run Code Online (Sandbox Code Playgroud)
但它总是返回rdd。有什么建议么?
不确定您的代码不起作用的确切原因,但好的Scala形式包括指定返回类型:
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]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12568 次 |
| 最近记录: |