千家信息网

Hadoop读取环境变量及setup函数

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,setup 函数原码:(摘自《hadoop实战》)*Called once at the start of the task.protected void setup(Context context)
千家信息网最后更新 2025年02月23日Hadoop读取环境变量及setup函数

setup 函数原码:(摘自《hadoop实战》)
*Called once at the start of the task.
protected void setup(Context context) throws IOException,InterruptedException{}

从注释可得知,setup函数在Task启动时就调用。
在MapReduce中作业会被组织成MapTask和ReduceTask。
每个Task都以Map类或Reduce类为处理方法主体,
输入分片为处理方法的输入,自己的分片处理完后Task就销毁了。
从这里看出,setup函数在task启动后数据处理前就调用一次
而覆盖的Map函数和Reduce函数会针对输入分片的每个Key调用一次,
所以setup函数可以看作Task上一个全局处理。
利用setup函数的特性,可以将Map或Reduce函数中的的重复处理放到setup函数中。
如老师给的Exercise_2中的"name"
但需要注意的是,调用setup函数只是对应的Task上全局操作,而不是整个作业的全局操作。





可以先用api把本地的文件传到hdfs中的 /user/hadoop/test 里去
//本地文件上传到HDFS上
public static void upload(String src,String dst) throws FileNotFoundException,IOException{


InputStream in = new BufferedInputStream(new FileInputStream(src));
//得到配置对象
Configuration conf = new Configuration();
//文件系统
FileSystem fs = FileSystem.get(URI.create(dst), conf);
//输出流
OutputStream out = fs.create(new Path(dst), new Progressable() {

public void progress() {
System.out.println("上传完一个设定缓存区大小容量的文件!");
}
});
//连接两个流,形成通道,使输入流向输出流传输数据
IOUtils.copyBytes(in, out, 4096,true);
}
上传的时候调用这个函数就可以了
例如
upload("/home/jack/test/test.txt","/user/hadoop/test/test");
前面的是本地目录中的文件,后面是hdfs中的文件
注意 必须两者都必须是"路径+文件名" 不能没有文件名




Configuration conf = new Configuration();


conf.setStrings("job_parms", "aaabbc"); //关键就是这一句
Job job = new Job(conf, "load analysis");
job.setJarByClass(LoadAnalysis.class);
job.setMapperClass(LoadMapper.class);
job.setReducerClass(LoadIntoHbaseReduce.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(Text.class);

FileInputFormat.addInputPath(job, new Path(otherArgs[0]));




@Override
protected void setup(Context context)
throws IOException, InterruptedException {
try {

//从全局配置获取配置参数
Configuration conf = context.getConfiguration();
String parmStr = conf.get("job_parms"); //这样就拿到了

......

} catch (SQLException e) {

e.printStackTrace();
}

}




全局文件:hadoop有distributed cache来保存全局文件,保证所有node都可以访问,使用类名为DistributedCache

函数 文件 全局 处理 输入 配置 数据 文件名 方法 作业 输出 两个 主体 关键 参数 只是 大小 实战 容量 对象 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 定义数据库表与字段 南宁一站网网络技术有限 信息软件开发有哪些类型 数据库导出的txt文件如何查看 史上最强服务器m c手机版 长沙编程软件开发流程 魔兽世界 6.0 数据库 软件开发的退税要求 公安网络安全是保密单位么 数据库原理及应用习题答案陈甲华 上海大学数据库原理 物联网核心是技术网络技术吗 携程网数据库设计 万达医疗系统软件开发 30多台电脑组建局域网服务器 格力应用软件开发好吗 广东公安网络安全管理考几科 vivo网络安全证书过期 河南数据网络技术分类价目表 音乐节拍器软件开发者 数据库 物理结构 爱易网络技术有限怎么样 粤版网络技术应用教案全套 义乌市联诚网络技术有限公司 数据库计算字段不可排序 网络安全法对网络安全从业者 2b2t服务器怎么插 学计算机怎么开发软件开发 服务器前面指示灯黄色的 wifi宽带营运商服务器未响应
0