2017-02-09 71 views
0

夥計們,星火:修改CSV文件,並寫入到其他文件夾

我們有一個要求,我們想要做的CSV文件未成年人改造和寫入相同的使用火花其他HDFS文件夾。

e.g /input/csv1.txt(至少4 GB文件)

ID,Name,Address 
100,john,some street 

輸出應在文件(輸出/ csv1.txt)。基本上,兩個新列將分析地址後加上(記錄的順序應該是相同的輸入文件)

ID,Name,Address,Country,ZipCode 
100,Name,Address,India,560001 

貌似沒有簡單的火花做到這一點。

回答

1

恩,我不知道你的意思是沒有簡單的方法 - spark-csv包讓它很容易恕我直言。根據您正在運行的Spark的版本,你需要做以下之一:

星火2.x的

val df = spark.read.csv("/path/to/files/") 
df 
.withColumn("country", ...) 
.withColumn("zip_code", ...) 
.write 
.csv("/my/output/path/") 

星火1.x的

val df = sqlContext.read.format("com.databricks.spark.csv").load(/path/to/my/files/") 
df.  
.withColumn("country", ...) 
.withColumn("zip_code", ...) 
.write 
.format("com.databricks.spark.csv") 
.save("/my/output/path/") 

注意,我剛纔把withColumn放在這裏 - 你可能加入了一些其他的包含國家和郵政編碼的數據框,但是我的例子只是爲了說明你如何用spark-csv軟件包(它已經構建到Spark 2.x中)讀寫它。

+0

嗨,我們試着運行這個,但是我們在輸出目錄中獲得PART文件(part-00000)。相反,我們需要獲取文件名稱,因爲它在輸出目錄中。 –