2014-01-17 247 views
4

我在我的Hadoop集羣上有一個很大的CSV文件。文件的第一行是一個'標題'行,它由字段名組成。我想在這個標題行上執行操作,但我不想處理整個文件。另外,我的程序是用Java編寫的並使用Spark。如何使用Java高效讀取Hadoop(HDFS)文件中的第一行?

在Hadoop集羣中讀取大型CSV文件的第一行的有效方法是什麼?

+0

諷刺?不確定。如果你覺得我可以做更多,請讓我知道。試圖學習如何正確使用StackOverflow。謝謝。 – mcsilvio

+0

是的諷刺。如果你說了類似的話會更好,我嘗試了下面的內容,但它有這樣和那樣的錯誤。 –

回答

5

您可以訪問hdfs文件與FileSystem類,朋友們:

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.net.URI; 

import org.apache.hadoop.conf.Configuration; 
import org.apache.hadoop.fs.FSDataInputStream; 
import org.apache.hadoop.fs.Path; 
import org.apache.hadoop.hdfs.DistributedFileSystem; 

DistributedFileSystem fileSystem = new DistributedFileSystem(); 
Configuration conf = new Configuration(); 
fileSystem.initialize(new URI("hdfs://namenode-host:54310"), conf); 
FSDataInputStream input = fileSystem.open(new Path("/path/to/file.csv")); 
System.out.println((new BufferedReader(new InputStreamReader(input))).readLine()); 

此代碼不會使用MapReduce和將與合理的速度運行。

+0

閱讀完這些課程的實際工作後,看起來你是對的!謝謝! – mcsilvio

相關問題