Hadoop がファイルを読み取る
1. 実験の目標
- Hadoop 操作命令と HDFS コマンド ライン インターフェイスに精通している
- HDFS の原則をマスターする
- HDFS の API の使い方をマスターする
- URLクラスを通じてHDFS上のファイルコンテンツを読み取る方法をマスターする
- FileSystem が HDFS 上のファイルの内容を読み取る方法をマスターする
2. 実験要件
- 実験操作の各ステップの成功結果のスクリーンショットを提供します。
- この実験作業の包括的な概要を提供します。
- 実験の内容が完了すると、実験レポート ファイルの名前が「学生 ID 名 実験 3」に変更されます。
3. 実験内容
-
FileSystem クラスを使用して、HDFS 上のファイルを読み取り、ファイルの内容を標準出力ストリームに出力し、ローカルとクラスターでそれぞれテストします。詳細な実装プロセス、完全なコード、および実装効果のスクリーンショットが示されています。最終的なレンダリングは図 1 と図 2 を参照してください。(新しいファイルをローカルに作成する必要があります。ファイル名またはファイルの内容はあなたの名前を反映する必要があります。ファイルの内容は中国語と英語の両方で準備できます。HDFS にアップロードするにはシェル コマンドを使用します。) 図 1 ローカル テストの効果ファイルを読み取っている FileSystem の図 2
FileSystemの
読み取りフェッチ ファイル クラスターのテスト レンダリング -
URL クラスを通じて、HDFS 上のファイル コンテンツが読み取られ、主な実装プロセス、完全なコード、実装効果のスクリーンショットが表示されます。最終的なレンダリングについては、図 3 と図 4 を参照してください。(ローカルで新しいファイルを作成する必要があります。ファイル名またはファイルの内容は自分の名前を反映する必要があります。ファイルの内容は自分で用意する必要があります。中国語と英語の両方を使用できます。HDFS にアップロードするにはシェル コマンドを使用します。)図 3 URL 読み取りファイルのローカル テストの効果 図 4
URL
読み取りファイル クラスター テストのレンダリング -
FileSystem クラスを使用して、HDFS 上の複数のファイルを読み取り、ファイルの内容を標準出力ストリームに出力し、主な実装プロセス、完全なコード、実装効果のスクリーンショットを提供します。実装効果のスクリーンショットについては、図 5 を参照してください (図 5 は、2 つのファイル cs.txt および cslg.txt の内容を読み取るテスト効果のスクリーンショットです)。ローカルで 2 つの新しいファイルを作成する必要があります。ファイルのうち 2 つは学生 ID と名前です。ファイルの内容は個人のプロフィールと出身地情報です。ファイルの内容は中国語と英語の両方にすることができます。HDFS にアップロードするにはシェル コマンドを使用します。 。
図 5 複数のファイルの内容を読み取る FileSystem メソッド -
URL クラスを通じて、HDFS 上の複数のファイルのコンテンツが読み取られ、主な実装プロセス、完全なコード、および実装効果のスクリーンショットが表示されます。最終的なレンダリングを図 6 に示します。前の実験の 2 つのテキスト ファイルを使用して、2 つの新しいテキスト ファイルを作成することもできます。ファイル名は前の実験と同じで、ファイルの内容はカスタマイズされています。
図 6 URL を使用した複数のファイルのコンテンツの読み取り
4. 実験手順
実験1
実験コード
package com.wjw.hadoop;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
public class FileSystemCat01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String uri = "hdfs://master:9000/wjw01.txt";
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://master:9000");
FileSystem fs = null;
FSDataInputStream in =null;
try{
fs = FileSystem.get(conf);
in = fs.open(new Path(uri));
IOUtils.copyBytes(in, System.out, 4096, false);
}catch(IOException e){
e.printStackTrace();
}finally{
if(in != null){
try{
fs.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
}
}
実験のスクリーンショット
実験2
実験コード
package com.wjw.hadoop;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
import org.apache.hadoop.io.IOUtils;
public class FileCat01 {
static{
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String arg = "hdfs://master:9000/wjw02.txt";
InputStream in = null;
try{
in = new URL(arg).openStream();
IOUtils.copyBytes(in, System.out, 2048, false);
}catch(IOException e){
e.printStackTrace();
}finally{
IOUtils.closeStream(in);
}
}
}
実験のスクリーンショット
実験 3
実験コード
package com.wjw.hadoop;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
public class FileSystemCat02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
args = new String[2];
args[0] = "hdfs://master:9000/wjw03.txt";
args[1] = "hdfs://master:9000/wjw04.txt";
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://master:9000");
for(int i=0; i < args.length; i++){
FileSystem fs = null;
FSDataInputStream in =null;
try{
fs = FileSystem.get(conf);
in = fs.open(new Path(args[i]));
IOUtils.copyBytes(in, System.out, 4096, false);
}catch(IOException e){
e.printStackTrace();
}finally{
if(in != null){
try{
fs.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
}
}
}
実験のスクリーンショット
実験 4
実験コード
package com.wjw.hadoop;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
import org.apache.hadoop.io.IOUtils;
public class FileCat02 {
static{
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
}
public static void main(String[] args) {
// TODO Auto-generated method stub
args = new String[2];
args[0] = "hdfs://master:9000/wjw03.txt";
args[1] = "hdfs://master:9000/wjw04.txt";
for(int i=0; i < args.length; i++){
InputStream in = null;
try{
in = new URL(args[i]).openStream();
IOUtils.copyBytes(in, System.out, 2048, false);
}catch(IOException e){
e.printStackTrace();
}finally{
IOUtils.closeStream(in);
}
}
}
}
実験のスクリーンショット
添付ファイル: 一連の記事
実験 | 記事ディレクトリ | 直接リンク |
---|---|---|
実験01 | Hadoopのインストールと展開 | https://want595.blog.csdn.net/article/details/132767284 |
実験02 | HDFS の共通シェル コマンド | https://want595.blog.csdn.net/article/details/132863345 |
実験03 | Hadoop がファイルを読み取る | https://want595.blog.csdn.net/article/details/132912077 |
実験04 | HDFS ファイルの作成と書き込み | https://want595.blog.csdn.net/article/details/133168180 |
実験05 | HDFS ディレクトリとファイルの作成、削除、クエリ | https://want595.blog.csdn.net/article/details/133168734 |