Java HDFS一次读写操作
我正在从HDFS中的文件读取用户ID。我通过缓冲读取器逐行读取文件,并将currentsytemdate附加到用户ID,并在文件结束后将其存储在arraylist中。我将数组列表写入同一文件。但是我不想添加到arraylist,我想读一行,附加currentsystemdate并写入同一个文件是否可能HDFS主要是关于“写入一次,读取多次”。如果您试图更新该值,更好的选项将是HBase。 在mapreduce作业中,可以通过TableInputFormat和TableOutputFormat使用。Java HDFS一次读写操作,java,hadoop,Java,Hadoop,我正在从HDFS中的文件读取用户ID。我通过缓冲读取器逐行读取文件,并将currentsytemdate附加到用户ID,并在文件结束后将其存储在arraylist中。我将数组列表写入同一文件。但是我不想添加到arraylist,我想读一行,附加currentsystemdate并写入同一个文件是否可能HDFS主要是关于“写入一次,读取多次”。如果您试图更新该值,更好的选项将是HBase。 在mapreduce作业中,可以通过TableInputFormat和TableOutputFormat使用
希望它能对您有所帮助。我正在阅读位于hdfs中的test.txt文件,并将“Kishore”附加到该文件的每一行。根据你的问题改变你的逻辑
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class Append {
public static void main(String[] args) throws IOException {
Configuration conf = new Configuration();
conf.addResource(new Path(
"/home/kishore/BigData/hadoop/etc/hadoop/core-site.xml"));
String line = "Kishore";
Path path = new Path("hdfs://localhost:9000/test.txt");
FileSystem fs = FileSystem.get(conf);
BufferedWriter br = new BufferedWriter(new OutputStreamWriter(
fs.append(path)));
for(int i=0; i< 1000;i++){
br.write(i+"\n");
}
br.close();
}
}
导入java.io.BufferedWriter;
导入java.io.IOException;
导入java.io.OutputStreamWriter;
导入org.apache.hadoop.conf.Configuration;
导入org.apache.hadoop.fs.FileSystem;
导入org.apache.hadoop.fs.Path;
公共类附加{
公共静态void main(字符串[]args)引发IOException{
Configuration conf=新配置();
conf.addResource(新路径(
“/home/kishore/BigData/hadoop/etc/hadoop/core site.xml”);
字符串line=“Kishore”;
路径路径=新路径(“hdfs://localhost:9000/test.txt");
FileSystem fs=FileSystem.get(conf);
BufferedWriter br=新的BufferedWriter(新的OutputStreamWriter(
fs.append(path));
对于(int i=0;i<1000;i++){
br.写入(i+“\n”);
}
br.close();
}
}