我編寫的scala代碼給了我數據類型錯誤。 testpredict_02的主要方法是Double。Spark Scala - 將一個記錄和一列的Dataframe轉換爲Double
val featuresMD = hiveContext.read.parquet("hdfs://machine01:9000/models/nb/metadata/features")
def testpredict_02(VData: Vector) = { MyModel.predict(VData) }
def outerpredict_02(argincome: String,argage: String,arggender: String) = {
featuresMD.registerTempTable("features_md")
val income = hiveContext.sql("select distinct income_index from features_md where income = argincome")
val age = hiveContext.sql("select distinct age_index from features_md where age = argage")
val gender = hiveContext.sql("select distinct gender_index from features_md where gender = arggender")
testpredict_02(Vectors.dense(income.select("income_index"), age.select("age_index"), gender.select("gender_index")))
Error :
<console>:43: error: type mismatch;
found : org.apache.spark.sql.DataFrame
required: Double
testpredict_02(Vectors.dense(income.select("income_index"), age.select("age_index")))
請幫助..
'income.select(「income_index」)'返回'Dataframe',而不是'Double'。所以'Vectors.dense(...)'創建了一個3個數據幀的向量 - 我敢肯定,這不是你想要的,並且沒有任何用處。 「MyModel.predict」期待什麼類型? –
謝謝Tzach。 MyModel.predict期望DOUBLE的向量。 income.select( 「income_index」) RES2:org.apache.spark.sql.DataFrame = [income_index:雙] age.select( 「age_index」) RES1:org.apache.spark.sql.DataFrame由於age.select(「age_index」)和income.select(「income_index」)返回sql.DataFrame,我遇到這個問題,因此列數據類型爲Double。有沒有其他的方法可以只取得列值。 –
但是每個Dataframe都包含_many_雙打 - 一個Dataframe是一個分佈式的記錄集合...您需要哪一個?第一?任何?所有?如果「全部」 - 如果3個數據幀沒有相同數量的記錄會怎麼樣?你將如何構建這些值的向量?看起來你需要重新設計整個事物 - 這似乎不是一個正確的使用Spark ... –