2016-06-20 2 views
0

文字列またはRDDを引数として受け取り、データフレームを返す関数を作成しようとしています。パラメータとして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:\\") 
} 

が、それはRDD常にretuns。助言がありますか?

答えて

1

あなたのコードが動作していないが、良い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] 
+1

iは戻り値の型を定義していなかったてもよいです。それは私がDataFrameが働くリターンを定義するなら働きます。ありがとう! – user1122

関連する問題