首页 \ 问答 \ 如何将hadoop罐加入classpath?(how add hadoop jars to classpath?)

如何将hadoop罐加入classpath?(how add hadoop jars to classpath?)

我的mac上的Hadoop 2.7.3安装在:

/usr/local/Cellar/hadoop/2.7.3

我编写了一个demo来使用java从HDFS读取文件:

import java.io.*;
import java.net.URI;
import java.net.URISyntaxException;
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 org.apache.hadoop.io.IOUtils;

public class HDFSTest{

public static void main(String[] args) throws IOException, URISyntaxException{

  String file= "hdfs://localhost:9000/hw1/customer.tbl";
  Configuration conf = new Configuration();
  FileSystem fs = FileSystem.get(URI.create(file), conf);
  Path path = new Path(file);
  FSDataInputStream in_stream = fs.open(path);
  BufferedReader in = new BufferedReader(new      
  InputStreamReader(in_stream));
  String s;
     while ((s=in.readLine())!=null) {
        System.out.println(s);
     }
    in.close();
    fs.close();
  }
}

当我编译java文件时,错误如图所示:

hero:Documents yaopan$ javac HDFSTest.java 
HDFSTest.java:8: error: package org.apache.hadoop.conf does not exist
import org.apache.hadoop.conf.Configuration;
                         ^
HDFSTest.java:10: error: package org.apache.hadoop.fs does not exist
import org.apache.hadoop.fs.FSDataInputStream;
                       ^
HDFSTest.java:12: error: package org.apache.hadoop.fs does not exist
import org.apache.hadoop.fs.FSDataOutputStream;
                       ^
HDFSTest.java:14: error: package org.apache.hadoop.fs does not exist
import org.apache.hadoop.fs.FileSystem;

我知道原因是找不到hadoop jar,怎么配置?^


Hadoop 2.7.3 on my mac is installed at:

/usr/local/Cellar/hadoop/2.7.3

I write a demo to read file from HDFS using java:

import java.io.*;
import java.net.URI;
import java.net.URISyntaxException;
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 org.apache.hadoop.io.IOUtils;

public class HDFSTest{

public static void main(String[] args) throws IOException, URISyntaxException{

  String file= "hdfs://localhost:9000/hw1/customer.tbl";
  Configuration conf = new Configuration();
  FileSystem fs = FileSystem.get(URI.create(file), conf);
  Path path = new Path(file);
  FSDataInputStream in_stream = fs.open(path);
  BufferedReader in = new BufferedReader(new      
  InputStreamReader(in_stream));
  String s;
     while ((s=in.readLine())!=null) {
        System.out.println(s);
     }
    in.close();
    fs.close();
  }
}

When I compile the java file ,error as shown blow:

hero:Documents yaopan$ javac HDFSTest.java 
HDFSTest.java:8: error: package org.apache.hadoop.conf does not exist
import org.apache.hadoop.conf.Configuration;
                         ^
HDFSTest.java:10: error: package org.apache.hadoop.fs does not exist
import org.apache.hadoop.fs.FSDataInputStream;
                       ^
HDFSTest.java:12: error: package org.apache.hadoop.fs does not exist
import org.apache.hadoop.fs.FSDataOutputStream;
                       ^
HDFSTest.java:14: error: package org.apache.hadoop.fs does not exist
import org.apache.hadoop.fs.FileSystem;

I know the reason is can not find hadoop jars,how to configure that? ^


原文:https://stackoverflow.com/questions/40566172
更新时间:2022-02-24 18:02

最满意答案

我们尚未公布时间表,但是,您应该期望转向下一代基于v3的平台。 如果您正在寻找有关转换应用程序的一些指导,请查看OpenShift在线迁移中心 。 一个适当的通知将会消失。

感谢指向令人困惑的链接,我们将清理那些。 还要感谢使用OpenShift。

问候,史蒂夫


We haven't announced the timetable yet but yes, you should expect to move to the next generation v3-based platform. If you are looking for some guidance on transitioning your app, you should check out OpenShift Online Migration Center. A proper notice will go out.

Thanks for the pointers to the confusing links, we'll get those cleaned up. Also thanks for using OpenShift.

Regards, Steve

相关问答

更多
  • 它就是! 我的应用程序终于可以再次访问:路由器花了2天时间来设置我的路由。 我不需要采取任何行动。 但是起始平台仍然遇到困难,因此我将避免任何重新部署,直到状态再次变为绿色。 There it is ! My application is reachable again at last : It took 2 days for the router to setup my route. No action required from my part. But the starter platform is ...
  • 这是非支持 (Pro)计划的支持自定义域的含义。 使用入门计划,您无法指定域名。 This is meant by Supports Custom Domains for the non-starter (Pro) plan. With the starter plan, you cannot specify domain names.
  • 最后我将它用于openshift,尽管配置最简单。 以下是关键步骤: 使用openshift DIY盒式磁带获取websocket支持,该支持公开外部端口8000并在OPENSHIFT_DIY_IP指定的虚拟IP地址OPENSHIFT_DIY_IP由到内部端口8080 。 编译mosquitto,并在config.mk关闭以下所有功能,以避免将大量软件包安装到openshift: WITH_TLS , WITH_TLS_PSK , WITH_THREADING , WITH_BRIDGE , WITH_SR ...
  • 无需查看更多详细信息,任何S2I构建器映像都将很乐意使用您自定义提供的run脚本以另一种方式启动应用程序。 在源代码目录中创建.s2i/bin/ (请注意点),将run脚本放入其中并在OpenShift中重建应用程序 - 它将在部署时自动使用您的自定义run脚本。 这是在OpenShift中使用自定义命令启动应用程序的首选方法。 关于您的直接问题,有一个非常简单的原因,您无法更改脚本的权限:您尝试修改已部署的窗格中的权限,而不是构建器窗格。 部署的pod使用不同的UID运行,通常在100000000的范围内 ...
  • 如果您没有项目,或者没有部署的豆荚,那么该帐户将被退役。 如果发生这种情况,您可以重新创建您的帐户。 如果您仍然遇到登录问题,那么您可以使用以下联系表单: https://help.openshift.com/forms/community-contact.html 报告任何问题。 如果这是一个短暂的问题,我会建议继续重新尝试。 您还可以在以下位置找出群集中是否存在任何当前问题: https://status.starter.openshift.com/ If you have no project, or ...
  • 这条线很可疑: $cert = __DIR__ . "./cacert.pem"; 基本上你会得到像$ cert equaling /home/path./cacert.pem这样的东西,我很确定这不是你想要的,为什么你得到ssl错误,它找不到证书。 这可以纠正为: $cert = __DIR__ . "/cacert.pem"; 将cacert.pem存储在$ OPENSHIFT_DATA_DIR中也可能更好,并将其引用为: $cert = getenv("OPENSHIFT_DATA_DIR")." ...
  • EBS卷类型只能在OpenShift集群中一次安装在一个节点上。 如果将Java和MySQL作为可以放在不同节点上的独立应用程序,那么就无法对两者进行挂载。 该错误警告您这一点。 对于Java和MySQL同时使用单个EBS卷的唯一方法是让它们在同一个pod的单独容器中运行。 您还需要确保将部署策略设置为“重新创建”而不是“滚动”,因为滚动会导致在旧实例仍然存在的情况下创建新实例,同时会出现同样的问题,因为新旧可能位于不同的节点上。 简而言之,OpenShift在线入门版没有为您提供足够的持久性卷来执行您要执 ...
  • 这将是两件事之一。 编译Pandas是一个巨大的记忆力,可能是因为编译器遇到了一些病态的情况。 或者,此时生成的图像的大小超过内部限制,因此耗尽分配的磁盘空间。 如果它是内存,则需要增加分配给构建窗格的内存。 默认情况下,在线这是512Mi。 要增加限制,您需要从Web控制台编辑构建配置的YAML / JSON,或使用oc edit从命令行oc edit 。 对于YAML,您需要添加以下内容: resources: limits: memory: 1Gi 这是设置字段: $ oc ...
  • 我们尚未公布时间表,但是,您应该期望转向下一代基于v3的平台。 如果您正在寻找有关转换应用程序的一些指导,请查看OpenShift在线迁移中心 。 一个适当的通知将会消失。 感谢指向令人困惑的链接,我们将清理那些。 还要感谢使用OpenShift。 问候,史蒂夫 We haven't announced the timetable yet but yes, you should expect to move to the next generation v3-based platform. If you a ...
  • 在OpenShift Online上部署时,您无法控制应用程序空闲。 定价页面显示24小时后免费计划将自动闲置,而铜牌和白银计划永远不会闲置。 这样做是因为OpenShift Online处理多租户的方式,如果你能够空闲你的应用程序,它也意味着你可以闲置你的邻居应用程序。 When deploying on OpenShift Online, you do not have control over your application idling. The pricing page shows that f ...

相关文章

更多

最新问答

更多
  • 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
  • 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
  • OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
  • 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
  • codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
  • 在计算机拍照在哪里进入
  • 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
  • No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
  • 单页应用程序:页面重新加载(Single Page Application: page reload)
  • 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
  • System.StackOverflow错误(System.StackOverflow error)
  • KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
  • 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
  • android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
  • TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
  • 企业安全培训的各项内容
  • 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
  • C#类名中允许哪些字符?(What characters are allowed in C# class name?)
  • NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
  • 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
  • 将多个行和可变行移动到列(moving multiple and variable rows to columns)
  • 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
  • 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
  • Angular $资源不会改变方法(Angular $resource doesn't change method)
  • 在Angular 5中不是一个函数(is not a function in Angular 5)
  • 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
  • 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
  • 常见的python rpc和cli接口(Common python rpc and cli interface)
  • Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
  • 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)