2017-01-11 6 views
2

スカラーが初めてです。スカラーを使用してHDFSからファイルを読み込む方法はありますか? 私はそれを私はHDFSに書き込みオプションを指しているときに私はそれをgoogled。スカラーを使用してhdfsからデータを読み込みます

import org.apache.hadoop.conf.Configuration; 
import org.apache.hadoop.fs.FileSystem; 
import org.apache.hadoop.fs.Path; 
import java.io.PrintWriter; 

/** 
* @author ${user.name} 
*/ 
object App { 

//def foo(x : Array[String]) = x.foldLeft("")((a,b) => a + b) 

def main(args : Array[String]) { 
println("Trying to write to HDFS...") 
val conf = new Configuration() 
//conf.set("fs.defaultFS", "hdfs://quickstart.cloudera:8020") 
conf.set("fs.defaultFS", "hdfs://192.168.30.147:8020") 
val fs= FileSystem.get(conf) 
val output = fs.create(new Path("/tmp/mySample.txt")) 
val writer = new PrintWriter(output) 
try { 
    writer.write("this is a test") 
    writer.write("\n") 
} 
finally { 
    writer.close() 
    println("Closed!") 
} 
println("Done!") 
} 

} 

私を助けてください。どのようにファイルを読み込むか、HDFSから読み込みファイルをscalaを使って読み込むことができます。

+0

これまでに何を試みましたか? https://hadoop.apache.org/docs/current/api/org/apache/hadoop/fs/FileSystem.html? – Reactormonk

+0

ここにドキュメントに従うことは難しいimho – thebluephantom

+0

私たちは、HDFSからローカルファイルシステムにコピーしてそこにシーケンシャルに処理する小さなファイルを選んでいます。 – thebluephantom

答えて

7

(ちょっと機能的なスタイルでの)方法の一つは、このようなことができます:あなたが見てthis articleまたはherehereを取ることができる

val hdfs = FileSystem.get(new URI("hdfs://yourUrl:port/"), new Configuration()) 
val path = new Path("/path/to/file/") 
val stream = hdfs.open(path) 
def readLines = Stream.cons(stream.readLine, Stream.continually(stream.readLine)) 

//This example checks line for null and prints every existing line consequentally 
readLines.takeWhile(_ != null).foreach(line => println(line)) 

はまた、これらの質問はあなたに関係を見て、作業含まれています(ただし、よりあなたが興味を持っているならば、Javaのような)コード例。

関連する問題