gpt4 book ai didi

java - 从Java Map Reduce代码读取Hive托管表

转载 作者:行者123 更新时间:2023-12-02 21:53:22 25 4
gpt4 key购买 nike

我想从我的 map 缩小作业中读取托管的Hive表数据。
我有一个托管的Hive表,该表是从另一个表创建的,该表是从外部Hive表创建的。我想在我的最终托管Hive表上运行map reduce作业。我读到托管表有一个分隔符,默认为“char 1” ASCII字符。
所以我这样做:

public static final String SEPARATOR_FIELD = new String(new char[] {1});

后来我做了一个循环:
end = rowTextObject.find(SEPARATOR_FIELD, start);

但是,当我运行map reduce jar时,在上一行和下一行给出了非法参数异常:
public void map(LongWritable key, Text rowTextObject, Context context) throws IOException, InterruptedException

PS:我在github上查找了一个项目,以读取mapreduce作业中的托管配置单元表,但是我无法理解@ https://github.com/facebook/hive-io-experimental

最佳答案

假设我的输入文件如下(例如xyz.txt):-
111 \ 001 222121 \ 001 222131 \ 001 222141 \ 001 222151 \ 001 222161 \ 001 r现在,为了解析已使用map reduce加载到hive表中的文件,我将在map方法中执行以下操作:

public class MyMapper extends Mapper<LongWritable, Text, Text, Text>{
public void map(LongWritable key, Text value,Context context) throws java.io.IOException ,InterruptedException
{

String[]vals=value.toString().split("\\001");
context.write(new Text(vals[0]),new Text("1"));
}

}

您的驱动程序方法将是正常的一种,如下所示:
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
job.setMapperClass(MyMapper.class);
FileInputFormat.addInputPath(job, new Path(xyz.txt));

因此,根据我给定的map方法,最终输出将如下所示:-111 1121 1131 1141 1151 1161 1171 1这就是您在寻找的内容,就像我在map方法中所做的解析一样?

关于java - 从Java Map Reduce代码读取Hive托管表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17821302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com