2016-10-03 66 views
0

我爲我的項目使用了SJS,並且想知道SJS中的NamedDataFrame如何工作。 我的第一個程序做這個如何使用火花作業服務器中的NamedDataFrame

val schemaString = "parm1:int,parm2:string,parm3:string,parm4:string,parm5:int,parm6:string,parm7:int,parm8:int" 
val schema = StructType(schemaString.split(",").map(fieldName => StructField(fieldName.split(":")(0), getFieldTypeInSchema(fieldName.split(":")(1)),true))) 

val eDF1 = hive.applySchema(rowRDD1, schema) 
this.namedObjects.getOrElseCreate("edf1", new NamedDataFrame(eDF1, true, StorageLevel.MEMORY_ONLY)) 

我的第二個程序這樣做是爲了取回數據幀。

val eDF1: Option[NamedDataFrame] = this.namedObjects.get("eDF1") 

這裏我只能使用Option。如何將NamedDataFrame轉換爲Spark DataFrame?

這個等價物是否可用?

this.namedObjects.get[(Int,String,String,String,Int,String,Int,Int)]("eDF1") 

謝謝!!

EDIT1: 準確地說,沒有SJS持久性,這可能是在DF

eDF1.filter(eDF1.col("parm1")%2!==0) 

我如何執行從保存namedObject相同的操作呢?

回答

0
+0

上面的例子並沒有說如何檢索一個Dataframe。以下是您示例中的一些行。你能否說如何在保持StructType的同時檢索df1? val struct = StructType( StructField(「i」,IntegerType,true):: StructField(「b」,BooleanType,false):: Nil val df = sqlContext.createDataFrame(rows(sc),struct) namedObjects.update(「df1」,NamedDataFrame(df,true,StorageLevel.MEMORY_AND_DISK)) – user1384205

0

下面的作品上NamedDataFrame

作業1

this.namedObjects.getOrElseCreate("df:esDF1", new NamedDataFrame(eDF1, true, StorageLevel.MEMORY_ONLY)) 

作業2

val NamedDataFrame(eDF1, _, _) = namedObjects.get[NamedDataFrame]("df:esDF1").get 

現在我可以在第二上EDF1操作作爲火花數據幀工作。

相關問題