Tag: hdfs

从java中删除hdfs文件夹

在边缘节点上运行的Java应用程序中,我需要删除hdfs文件夹(如果存在)。 我需要在运行在文件夹中输出的mapreduce作业(带有spark)之前执行此操作。 我发现我可以使用这种方法 org.apache.hadoop.fs.FileUtil.fullyDelete(new File(url)) 但是,我只能使用本地文件夹(即正在运行的计算机上的文件URL)。 我尝试使用类似的东西: url = “hdfs://hdfshost:port/the/folder/to/delete”; 使用hdfs://hdfshost:port是hdfs namenode IPC。 我用它来mapreduce,所以它是正确的。 但它没有做任何事情。 那么,我应该使用什么url,还是有其他方法? 注意: 这是一个简单的项目。

通过Java API从远程主机进行HDFS访问,用户身份validation

我需要通过Java API从远程桌面使用HDFS集群。 一切正常,直到写访问。 如果我正在尝试创建任何文件,我会收到访问权限exception。 路径看起来不错,但exception表示我的远程桌面用户名,这当然不是我需要访问所需的HDFS目录。 问题是: – 有没有办法在Java API中使用“简单”身份validation来表示不同的用户名? – 您能否在Java API示例中指出hadoop / HDFS中的身份validation/授权方案的一些很好的解释? 是的,我已经知道’whoami’在这种情况下可能会使用shell别名重载但我宁愿避免像这样的解决方案。 此处的具体细节是我不喜欢通过SSH和脚本使用管道等一些技巧。 我想使用Java API执行所有操作。 先谢谢你。

写入HDFS只能复制到0个节点而不是minReplication(= 1)

我有3个数据节点正在运行,而在运行作业时我得到以下错误, java.io.IOException:File / user / ashsshar / olhcache / loaderMap9b663bd9只能复制到0个节点而不是minReplication(= 1)。 运行中有3个数据节点,此操作中排除了3个节点。 在org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget(BlockManager.java:1325) 此错误主要发生在我们的DataNode实例空间不足或DataNode未运行时。 我尝试重新启动DataNodes但仍然遇到相同的错误。 我的集群节点上的dfsadmin -reports清楚地显示了大量可用空间。 我不确定为什么会这样。

使用Java将spark RDD保存到本地文件系统

我有一个使用Spark生成的RDD。 现在,如果我将此RDD写入csv文件,我将获得一些方法,如“saveAsTextFile()”,它将csv文件输出到HDFS。 我想将文件写入我的本地文件系统,以便我的SSIS进程可以从系统中选择文件并将它们加载到数据库中。 我目前无法使用sqoop。 除了编写shell脚本之外,它是否可以在Java中实现。 需要任何清晰度,请告知。

将数据附加到HDFS Java中的现有文件

我无法将数据附加到HDFS中的现有文件。 我希望如果文件存在然后追加一行,如果没有,创建一个名称给定的新文件。 这是我写入HDFS的方法。 if (!file.exists(path)){ file.createNewFile(path); } FSDataOutputStream fileOutputStream = file.append(path); BufferedWriter br = new BufferedWriter(new OutputStreamWriter(fileOutputStream)); br.append(“Content: ” + content + “\n”); br.close(); 实际上这个方法写入HDFS并创建一个文件,但正如我所提到的那样没有追加。 这是我测试我的方法的方法: RunTimeCalculationHdfsWrite.hdfsWriteFile(“RunTimeParserLoaderMapperTest2”, “Error message test 2.2”, context, null); 第一个参数是文件的名称,第二个参数是消息,另外两个参数不重要。 所以任何人都知道我错过了什么或做错了什么?

如何在hadoop hdfs中列出目录及其子目录中的所有文件

我在hdfs中有一个文件夹,它有两个子文件夹,每个子文件夹有大约30个子文件夹,最后每个子文件夹包含xml文件。 我想列出所有xml文件,只给出主文件夹的路径。 在本地我可以使用apache commons-io的 FileUtils.listFiles()来做到这一点。 我试过这个 FileStatus[] status = fs.listStatus( new Path( args[ 0 ] ) ); 但它只列出了两个第一个子文件夹,它不会更进一步。 在hadoop有没有办法做到这一点?

从Spark中的压缩中读取整个文本文件

我有以下问题:假设我有一个包含压缩目录的目录,其中包含存储在HDFS上的多个文件。 我想创建一个包含T类型对象的RDD,即: context = new JavaSparkContext(conf); JavaPairRDD filesRDD = context.wholeTextFiles(inputDataPath); JavaPairRDD filesRDD = context.wholeTextFiles(inputDataPath); JavaRDD processingFiles = filesRDD.map(fileNameContent -> { // The name of the file String fileName = fileNameContent._1(); // The content of the file String content = fileNameContent._2(); // Class T has a constructor of taking the filename and the content of each […]