我的代碼:
val name = sc.textFile (“/ FileStore /表/ employeenames.csv”)
case類x (ID:字符串,Employee_name:字符串)
val namePairRDD = name.map (_.split (", "))。地圖(x = > (x (0) (1) .trim.toString))。toDF (“ID”、“Employee_name”)
namePairRDD.createOrReplaceTempView (“namePairRDD”)
val df = sqlContext。sql (“SELECT * FROM namePairRDD”)
df.show ()
我不知道如何ID和Employee_name出現在第一行。
我試著添加表,列標題,力的工作。
請幫助。
我知道我們可以以多種方式解決這個問題。我試圖解決這個問題。因此我在流。
寫失蹤的火花SQL查詢加入所有的三個表,對表進行排序,在給定的格式和顯示輸出:ID、名稱、工資,經理的名字。
產品說明:
1。表名是突出在以下查詢
火花sql
val經理= sc.textFile (“/ user / EmployeeManagers”)
val managerRDD =經理。地圖(x = > (x.split (", ") (0), x.split (", ") (1)))
val name = sc.textFile (“/ user / EmployeeNames”)
val namePairRDD =名字。地圖(x = > (x.split (", ") (0), x.split (", ") (1)))
val工資= sc.textFile (“/ user / EmployeeSalary”)
val salaryPairRDD =工資。地圖(x = > (x.split (", ") (0), x.split (", ") (1)))
<編寫代碼>
好了……讓我們試試另一個解決方案。
一種選擇是使用sc。wholeTextFiles (. .)並簡單地刪除文件的第一行。就我個人而言,我不喜歡這個,因為每個文件是被迫進入一個分區,如果它是一個非常大的文件,然後我可以有問題的內存。
第二個(第三)選項圍繞如何filter ()行# 1包含了一個頁眉和在這種情況下,需要有特殊的知識數據。
在上麵示例中,第一列值E01, E02, E03等等。如果我們可以肯定地說,“ID”的值是無效的,那麼我們可以排除任何記錄的值。你會做這個之後你將CSV文件,或者更具體地說,在調用之後xxx.map ()。缺點是,你隻是檢查一列的數據,不得你需要盡可能準確。
第三種選擇,可能更容易實現,是filter ()任何行文本是一個特定的值——這是整行匹配你的列標題。在這種情況下,過濾器接受任何行,不等於“ID, Employee_name”。你會做這後調用sc.textFile ()之前,xxx.map ()。
如果你真的想要棘手,在第一行你可以閱讀你的文件來確定什麼是標題,然後在上麵的過濾器選項三使用它。