添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
import org .apache .hadoop .conf .Configuration ; import org .apache .hadoop .fs .FSDataInputStream ; import org .apache .hadoop .fs .FSDataOutputStream ; import org .apache .hadoop .fs .FileSystem ; import org .apache .hadoop .fs .Path ; import java .io .BufferedReader ; import java .io .InputStreamReader ; import java .net .URI ; public class App public static void main( String[] args ) try { Configuration conf = new Configuration() ; // 不设置该代码会出现错误:java .io .IOException : No FileSystem for scheme: hdfs conf .set ( "fs.hdfs.impl" , "org.apache.hadoop.hdfs.DistributedFileSystem" ) ; String filePath = "hdfs://127.0.0.1:9000/test/test.txt" ; Path path = new Path(filePath) ; // 这里需要设置URI,否则出现错误:java .lang .IllegalArgumentException : Wrong FS: hdfs:// 127.0 .0 .1 : 9000 /test/test .txt , expected: file:/// FileSystem fs = FileSystem .get (new URI(filePath), conf) ; System .out .println ( "READING ============================" ) ; FSDataInputStream is = fs .open (path) ; BufferedReader br = new BufferedReader(new InputStreamReader(is)) ; // 示例仅读取一行 String content = br .readLine () ; System .out .println (content) ; br .close () ; System .out .println ( "WRITING ============================" ) ; byte[] buff = "this is helloworld from java api!\n" .getBytes () ; FSDataOutputStream os = fs .create (path) ; os .write (buff, 0 , buff .length ) ; os .close () ; fs .close () ; } catch (Exception e) { e .printStackTrace () ;

运行结果:

2. pom.xml文件配置

1. 使用shade方式防止打包失败 2. 这里的dependency可以只引用 `hadoop-client`,或者同时引用`hadoop-common`和`hadoop-hdfs`
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.jiecxy</groupId>
  <artifactId>HDFSTest</artifactId>
  <version>1</version>
  <packaging>jar</packaging>
  <name>HDFSTest</name>
  <url>http://maven.apache.org</url>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
      <dependency>
          <groupId>org.apache.hadoop</groupId>
          <artifactId>hadoop-client</artifactId>
          <version>2.8.1</version>
      </dependency>
  </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <executions>
                    <!-- Run shade goal on package phase -->
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <filters>
                                <filter>
                                    <!-- Do not copy the signatures in the META-INF folder.
                                    Otherwise, this might cause SecurityExceptions when using the JAR. -->
                                    <artifact>*:*</artifact>
                                    <excludes>
                                        <exclude>META-INF/*.SF</exclude>
                                        <exclude>META-INF/*.DSA</exclude>
                                        <exclude>META-INF/*.RSA</exclude>
                                    </excludes>
                                </filter>
                            </filters>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>com.jiecxy.App</mainClass>
                                </transformer>
                            </transformers>
                            <createDependencyReducedPom>false</createDependencyReducedPom>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

3.可能出现的问题

3.1 java.lang.IllegalArgumentException: Wrong FS

java.lang.IllegalArgumentException: Wrong FS: hdfs://127.0.0.1:9000/test/test.txt, expected: file:///
    at org.apache.hadoop.fs.FileSystem.checkPath(FileSystem.java:666)
    at org.apache.hadoop.fs.RawLocalFileSystem.pathToFile(RawLocalFileSystem.java:86)
    at org.apache.hadoop.fs.RawLocalFileSystem.deprecatedGetFileStatus(RawLocalFileSystem.java:630)
    at org.apache.hadoop.fs.RawLocalFileSystem.getFileLinkStatusInternal(RawLocalFileSystem.java:861)
    at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:625)
    at org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:435)
    at org.apache.hadoop.fs.ChecksumFileSystem$ChecksumFSInputChecker.<init>(ChecksumFileSystem.java:146)
    at org.apache.hadoop.fs.ChecksumFileSystem.open(ChecksumFileSystem.java:347)
    at org.apache.hadoop.fs.FileSystem.open(FileSystem.java:786)
    at com.jiecxy.App.main(App.java:25)

解决方法:

FileSystem fs = FileSystem.get(conf);
FileSystem fs = FileSystem.get(new URI(filePath), conf);

3.2 java.io.IOException: No FileSystem for scheme: hdfs

java.io.IOException: No FileSystem for scheme: hdfs
    at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2798)
    at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2809)
    at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:100)
    at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2848)
    at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2830)
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:389)
    at com.jiecxy.App.main(App.java:24)

解决方法:
指定hdfs(若只因用了hadoop-common,则需要再加入依赖 hadoop-hdfs,否则找不到该类):

conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");
package test; import java.io.IOException;import java.net.URI;import org.apache.hadoop.conf.Configura... 来自: qa38113202的博客 一、安装Maven1、 配置系统环境变量2、 验证-在cmd输入mvn –v3、设置localRepository例如我的repo位置为:D:\software\Maven\repo,在config文... 来自: 七度余温~~~的博客 安装好hadoop后,可以在命令行启动客户端,通过命令行来操作hdfs,如:$ bin/hadoop fs -ls / //查看根目录下的内容$ bin/hadoop fs -mkdir ... 来自: 欢迎来到Jimmy的博客 引言最近也有很多人来向我"请教",他们大都是一些刚入门的新手,还不了解这个行业,也不知道从何学起,开始的时候非常迷茫,实在是每天回复很多人也很麻烦,所以在这里统一作个回复吧。Java学习路线当然,这里... 来自: java_sha的博客 使用Java调用HDFS的API进行文件基本操作本样例主要是代码,其中包括了Java进行上传,下载,删除,创建文件夹,遍历文件夹等操作,代码环境基于MacOS,IDEA,使用Maven来配置依赖包,后... 来自: Rain1024的博客 首先,新建Maven项目,添加相应的依赖,新建Java类:package com.young;import org.apache.hadoop.conf.Configuration;import or... 来自: weixin_30662539的博客 之前分别介绍了使用Hadoop的C API操作HDFS和使用Hadoop的Java API操作HDFS,在介绍Java访问方式时(C API不存在这样的问题),程序是部署在Hadoop安装环境的,这具... 来自: cjf_wei的博客 1、介绍对于namenode是HA高可用集群时,客户端远程访问hdfs有两种实现方法: (1)将所有关于namenode的参数写入Configuration对象中 (2)将配置文件core-site.... 来自: 程裕强的专栏 使用Java API出现以下异常:org.apache.hadoop.security.AccessControlException: Permission denied: user=Administ... 来自: 逆天骚年的博客 为什么要用maven:如果建立大一点的java项目的话,需要的jar和各jar包之间的依赖关系会很多,需要自己手动找jar包和jar依赖导入项目中,maven就是来解决这个问题的,用来管理java项目... 来自: 杨苗苗 转载请注明出处:http://blog.csdn.net/l1028386804/article/details/79090443其实很简单,直接创建一个Maven项目,pom.xml中加入如下配置即... 来自: 冰河的专栏 Configuration 的loadResources()方法 (采用lazy加载)1.解释了为什么会加载一些默认文件(*.site.xml)2.测试了一下用file的方式去读取hdfs文件,不行 ... 1. HDFS的java操作hdfs在生产应用中主要是客户端的开发,其核心步骤是从hdfs提供的api中构造一个HDFS的访问客户端对象,然后通过该客户端对象操作(增删改查)HDFS上的文件1.1 搭... 来自: weixin_33947521的博客 1.1用Maven创建一个标准化的Java项目mvn archetype:generate -DgroupId=com.baidu -DartifactId=InstructionsHdfs-Darc... 来自: leafdown_的博客 简介:本文主要讲解如何用java去操作hdfs,以下是我整理的常用的一些方法,本文主要介绍的是FileSystem,我把其集合到了一个工具类当中,下面的操作主要有 检查文件是否存在,创建文件,创建文件... 来自: 翟开顺 第一步:创建一个新的项目并导入需要的jar包公共核心包公共依赖包hdfs核心包hdfs依赖包第二步:将Linux中hadoop的配置文件拷贝到项目的src目录下第三步:配置windows本地的hado... 来自: 逆天骚年的博客 1、目录结构:2、代码:2.1 pom.xml<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w... 来自: liangsw 第4章 HDFS的Java API4.3 pom.xml解析4.3.1 Maven库https://mvnrepository.com/4.3.2 添加Hadoop的依赖在pom.xml文件里添加ha... 来自: 程裕强的专栏 一、介绍我们在使用MapReduce框架进行开发时,总会使用到Configuration类的一个实例对象去初始化一个人任务,然后进行任务提交,而在整个任务执行过程中,客户点实例化的Configurat... 来自: wozipa的博客 关于Maven的使用就不再啰嗦了,网上很多.1. 首先创建工程略2. 然后在pom.xml文件里添加hadoop的依赖包hadoop-common, hadoop-client, hadoop-hdf... 来自: 米兔by 学习Hadoop的第x天[3]环境准备打开IDEA创建Maven工程配置pom.xml导入Hadoop配置文件创建Demo环境准备装在虚拟机的Hadoop集群,装在windows宿主机上的IDEA、M... 来自: weixin_41098920的博客 最近在看浙大林子雨老师的mooc,3.6讲使用Eclipse开发环境与HDFS进行交互,我比较喜欢IDEA的风格,这篇blog记录了在使用IDEA时踩过的坑。配置Maven环境Maven是什么?Mav... 来自: Kevin的博客 第4章 HDFS的Java API4.1 Maven入门参考文章:https://my.oschina.net/huangyong/blog/1945834.1.1 Maven简介Apache Mav... 来自: 程裕强的专栏 恩,其实是我的毕设,一个数据挖掘系统,需要用到hadoop 然后我就用maven添加了hadoop的包 <dependency> <groupId>org.apache.hadoop</groupId 1、读取文件 /** * 测试读取文件 * @throws IOException */ @Test public void testSave() throws... 来自: Joy 前提已经安装配置好hadoop2.2,安装请参考我另一篇文章排版太辛苦,先弄个简易版出来pom.xml配置如下project xmlns="http://maven.apache.org/POM/4.... 来自: 生活要继续的专栏 idea是java开发的利器之一,其自身集成了maven,十分适用于大型项目的开发。大多数的Hadoop程序都是在idea下开发的,本文介绍了Hadoop+idea+maven的环境配置与开发测试准备... 来自: u012859945的博客 1. 第一步---下载mavenhttp://maven.apache.org/download.cgi2. Windows系统中配置环境变量将此D:\maven\apache-maven-3.3.3... 来自: cnq2328的专栏 转载至   http://blog.csdn.net/qq_33813365/article/details/70214484JDK版本的要求Hadoop 2.7 以及之后的版本,需要JDK 7;Ha... 来自: Lord_sh的博客 前言最近在学习Hadoop,每次创建项目都要复制之前项目的pom.xml通用文件,也是比较烦的。正好记得Maven可以创建自己的项目骨架的,也即是Archetype。有了项目骨架,不但pom.xml通... 来自: 风起于青萍之末 一.首先用eclipse创建Maven项目1..配置maven:   配置maven版本:选择自己安装的maven  配置本地仓库:关联maven的setting文件即可,setting文件要提前设置... 来自: 白子安 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的... ​ 进程通信是指进程之间的信息交换。这里需要和进程同步做一下区分,进程同步控制多个进程按一定顺序执行,进程通信是一种手段,而进程同步是目标。从某方面来讲,进程通信可以解决进程同步问题。 ​ 首先回顾下... 我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买ma... 双11不光是购物狂欢节,更是对技术的一次“大考”,对于阿里巴巴企业内部运营的基础保障技术而言,亦是如此。 回溯双11历史,这背后也经历过“小米加步枪”的阶段:作战室从随处是网线,交换机放地上的“一地... 小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycha... CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是... 2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人... 相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有... 其实,这篇文章,我应该早点写的,毕竟现在已经2月份了。不过一些其它原因,或者是我的惰性、还有一些迷茫的念头,让自己迟迟没有试着写一点东西,记录下,或者说是总结下自己前3年的工作上的经历、学习的过程。 所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...... Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。 这些问题的设计宗旨,主要是测试面试者对Java语... By 超神经场景描述:昨天 2 月 3 日,是大部分城市号召远程工作的第一天,全国有接近 2 亿人在家开始远程办公,钉钉上也有超过 1000 万家企业活跃起来。关键词:十一出行 人脸...... Java基础知识点梳理 虽然已经在实际工作中经常与java打交道,但是一直没系统地对java这门语言进行梳理和总结,掌握的知识也比较零散。恰好利用这段时间重新认识下java,并对一些常见的语法... 哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈... 蒙特卡罗方法,也称统计模拟方法,是1940年代中期由于科学技术的发展和电子计算机的发明,而提出的一种以概率统计理论为指导的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法 你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。虽然已经写了十多年的 Java 代码,但仍然觉得自己是个菜鸟(请允许我惭愧一下)。 在一个月黑风高的夜晚,我思前想后,觉得再也不能... Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以We... Spring1.Spring是什么?有什么好处?2.IOC是什么?有什么好处?具体过程?3.DI是什么?4.IOC和DI的关系?5.bean标签的属性有哪些?6.IOC创建对象有哪几种方式?7.Spr... 作者| Just出品|CSDN(CSDNnews)紧急驰援疫区,AI医生也出动了。截止到2月6日,随着新冠病毒肺炎疫情的不断发展,全国累计已有31161例确诊病例,26359例疑...... 本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降... 利用HTML5,css,js实现爱心树 以及 纪念日期的功能 网页有播放音乐功能 以及打字倾诉感情的画面,非常适合情人节送给女朋友 具体的HTML代码 具体只要修改代码里面的男某某和女某某 文字... 4 容器类型 容器深层含义自己不知道,但是就表面意思。我自己理解的容器就是容器。他就是一个可以装“东西”的罐子啥的。不同的“罐子”可以装的“东西”不同,就像酒杯装酒,茶杯装茶,水缸装水。酒杯、茶杯、水... Kafka errors NotLeaderForPartitionException, TimeoutException: Batch containing * record(s) expired

阅读数 22450