//dataset
michael,swimming,silve,2016,USA
usha,running,silver,2014,IND
lisa,javellin,gold,2014,USA
michael,swimming,silver,2017,USA
問題 - 1)有多少枚銀牌已經贏得了美國在每項運動 - 和代碼拋出的誤差值== =不是字符串的部件SPARK SQL:如何通過多個colmuns篩選記錄,並使用GROUPBY太
val rdd = sc.textFile("/home/training/mydata/sports.txt")
val text =rdd.map(lines=>lines.split(",")).map(arrays=>arrays(0),arrays(1),arrays(2),arrays(3),arrays(4)).toDF("first_name","sports","medal_type","year","country")
text.filter(text("medal_type")==="silver" && ("country")==="USA" groupBy("year").count().show
2)是什麼===和== 之間的差值當我使用過濾器,並與它只是一個條件(選擇具有===沒有& &或| |),它分別顯示了字符串結果和布爾結果,但是當我使用select和使用==過濾時,錯誤會拋出
感謝您的回覆@ykout。但第二個問題尚不清楚。因爲我是一個新手,並試圖從資源中理解,所以請隨我一起。和關於返回類型--- df.select($「_ c1」===「INDIA」)返回布爾值,而df.filter($「_ c1」===「INDIA」)返回各自的列 –
事實上select()和filter()返回數據集並將列作爲參數,這就是爲什麼當您使用== 時它會失敗,但select與給定Column作爲參數完成不同的事情。篩選器()返回與給定列中的條件匹配的完整行,而select()返回所選列的條件結果列(布爾類型的列)。 這就像是說.select(..) 和spark.sql(「select * from country where country =='IND'」)for spark.sql(「select country =='IND'from text」)。將文本註冊爲臨時視圖後,過濾器(..) 。 –
yakout