2017-02-24 52 views
1
object test { 

case class Caserne(x: String, y: String, Name: String, Description: String) 


def main(args: Array[String]): Unit = { 

val conf = new SparkConf().setAppName("BankDataAnalysis").setMaster("local[1]") 
val sc = new SparkContext(conf) 
val sqlContext= new SQLContext(sc) 

import sqlContext.implicits._ 

// load caserne data 
val caserneTxt = sc.parallelize(
    IOUtils.toString(
    new URL("http://donnees.ville.montreal.qc.ca/dataset/c69e78c6-e454-4bd9-9778-e4b0eaf8105b/resource/f6542ad1-31f5-458e-b33d-1a028fab3e98/download/casernessim.csv"), 
    Charset.forName("utf8")).split("\n")) 

val header = caserneTxt.first() 
val caserne = caserneTxt.map(s => s.split(",")).filter(s => s != header).map(
    s => Caserne(s(0), 
       s(1), 
       s(2).replaceAll("[^\\d]", "").trim(), 
       s(3).replaceAll("""<(?!\/?a(?=>|\s.*>))\/?.*?>""", " ").trim() 
       )).toDF() 

caserne.registerTempTable("caserne") 
sqlContext.sql("Select * from caserne").show() 

} 
} 

enter image description here爲什麼要從csv文件頭不工作

我不得不刪除csv文件頭。我使用過濾器(s => s!= header),但它沒有奏效。感謝您的幫助

回答

0

嘗試使用: -

val rows = data.filter(s=> header(s,"X") != "X") 

參考: - How do I convert csv file to rdd

我發現這個方便的方法

val header = caserneTxt.first() 
val no_header = caserneTxt.filter(_(0) != header(0)) 
+0

謝謝你的幫助,我找到了簡單的方法從參考:) –

0

一個方法是使用標頭鍵的一個和過濾,從數據幀類似下面

dataFrame.filter(row => row.getAs[String]("description") != "description").show 
相關問題