我想存储当前正在运行的查询的详细信息,比如执行查询的文件名和时间。为此,我在hdfs中创建了一个文件,尝试编写信息。但问题是如何将数据附加到现有文件中。请帮帮我。提前谢谢
3gtaxfhh1#
从命令行执行此操作的最简单方法是:
echo -e 'Hello\nWorld' | hadoop dfs -put - /1.txt
它将创建一个文件 1.txt 在小路上 / 的 HDFS 将存储两行 Hello\nWorld 在里面。
1.txt
/
HDFS
Hello\nWorld
2hh7jdfx2#
您可以从命令行执行此操作:
$ hadoop fs -appendToFile <local_file> <hdfs_file>
如果您使用的是java,请看这个问题:用java在hdfs中编写一个文件
gzszwxb43#
使用命令:hdfs dfs-put file\u locationhdfs\u location
注意:hdfs\u位置是启用的
mpgws1up4#
首先,停止所有hadoop守护进程,并在hdfs-site.xml中添加以下属性:
<property> <name>dfs.support.append</name> <value>true</value> </property>
现在,重新启动守护程序并尝试以下代码:
public class HDFSAppend { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub Configuration conf = new Configuration(); conf.addResource(new Path("/path/to/your/hadoop/directory/conf/core-site.xml")); conf.addResource(new Path("/path/to/your/hadoop/directory/conf/hdfs-site.xml")); FileSystem fs = FileSystem.get(conf); FSDataOutputStream out = fs.append(new Path("/demo.txt")); out.writeUTF("Append demo..."); fs.close(); } }
hth公司
5t7ly7z55#
解决了的。。!!hdfs支持append。您只需执行一些配置和简单代码,如下所示:步骤1:在hdfs-site.xml中将dfs.support.append设置为true:
使用stop-all.sh停止所有守护程序服务,然后使用start-all.sh重新启动它步骤2(可选):仅当您有单节点群集时,因此必须将复制因子设置为1,如下所示:通过命令行:
./hdfs dfs -setrep -R 1 filepath/directory
也可以在运行时通过java代码执行相同的操作:
fShell.setrepr((short) 1, filePath);
步骤3:创建数据/将数据附加到文件的代码:
public void createAppendHDFS() throws IOException { Configuration hadoopConfig = new Configuration(); hadoopConfig.set("fs.defaultFS", hdfsuri); FileSystem fileSystem = FileSystem.get(hadoopConfig); String filePath = "/test/doc.txt"; Path hdfsPath = new Path(filePath); fShell.setrepr((short) 1, filePath); FSDataOutputStream fileOutputStream = null; try { if (fileSystem.exists(hdfsPath)) { fileOutputStream = fileSystem.append(hdfsPath); fileOutputStream.writeBytes("appending into file. \n"); } else { fileOutputStream = fileSystem.create(hdfsPath); fileOutputStream.writeBytes("creating and writing into file\n"); } } finally { if (fileSystem != null) { fileSystem.close(); } if (fileOutputStream != null) { fileOutputStream.close(); } } }
请告诉我任何其他帮助。干杯。!!
5条答案
按热度按时间3gtaxfhh1#
从命令行执行此操作的最简单方法是:
它将创建一个文件
1.txt
在小路上/
的HDFS
将存储两行Hello\nWorld
在里面。2hh7jdfx2#
您可以从命令行执行此操作:
如果您使用的是java,请看这个问题:用java在hdfs中编写一个文件
gzszwxb43#
使用命令:hdfs dfs-put file\u locationhdfs\u location
航向
注意:hdfs\u位置是启用的
mpgws1up4#
首先,停止所有hadoop守护进程,并在hdfs-site.xml中添加以下属性:
现在,重新启动守护程序并尝试以下代码:
hth公司
5t7ly7z55#
解决了的。。!!
hdfs支持append。
您只需执行一些配置和简单代码,如下所示:
步骤1:在hdfs-site.xml中将dfs.support.append设置为true:
使用stop-all.sh停止所有守护程序服务,然后使用start-all.sh重新启动它
步骤2(可选):仅当您有单节点群集时,因此必须将复制因子设置为1,如下所示:
通过命令行:
也可以在运行时通过java代码执行相同的操作:
步骤3:创建数据/将数据附加到文件的代码:
请告诉我任何其他帮助。
干杯。!!