[英]Converting pipe-delimited file to spark dataframe to CSV file
我有一個只有一欄的CSV文件,行定義如下:
123 || food || fruit
123 || food || fruit || orange
123 || food || fruit || apple
我想用一個單列和不同的行值創建一個csv文件:
orange
apple
我嘗試使用以下代碼:
val data = sc.textFile("fruits.csv")
val rows = data.map(_.split("||"))
val rddnew = rows.flatMap( arr => {
val text = arr(0)
val words = text.split("||")
words.map( word => ( word, text ) )
} )
但是這段代碼並沒有給我想要的正確結果。
有人可以幫我嗎?
您需要使用轉義符拆分特殊字符,因為拆分需要使用正則表達式
.split("\\|\\|")
轉換為CSV有點棘手,因為數據字符串可能包含定界符(用引號引起來),換行符或其他對解析敏感的字符,因此我建議使用spark-csv
val df = sqlContext.read
.format("com.databricks.spark.csv")
.option("delimiter", "||")
.option("header", "true")
.option("inferSchema", "true")
.load("words.csv")
和
words.write
.format("com.databricks.spark.csv")
.option("delimiter", "||")
.option("header", "true")
.save("words.csv")
您可以解決類似於此代碼的問題
val text = sc.textFile("fruit.csv")
val word = text.map( l => l.split("\\|\\|")
val last = word.map( w => w(w.size - 1))
last.distinct.collect
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.