import org.apache.hadoop.io.LongWritable;报错:The package org is not accessible怎么解决
时间: 2023-12-11 09:04:20 浏览: 158
这个错误通常是因为缺少相应的依赖包或者包的访问权限不够导致的。你可以尝试以下几个方案:
1. 确认你的项目中是否包含了正确的依赖,例如 hadoop-common、hadoop-hdfs、hadoop-mapreduce-client-core 等,你可以在 Maven 或 Gradle 中添加这些依赖。
2. 确认你的包的访问权限是否足够,如果你在使用其他的库或框架时遇到了类似的问题,你可以参考这篇文章来解决这个问题:https://www.baeldung.com/java-illegal-access-reflective-access-warning
3. 确认你的 IDE 配置是否正确,例如是否正确配置了 JDK 环境变量等。
希望这些方法能够帮到你解决问题。
相关问题
import java.io.IOException; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper; public class MyMapper extends Mapper<LongWritable, Text, Text, Int
Writable> {
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
// Splitting the input line into words
String[] words = value.toString().split(" ");
// Mapping each word with a count of 1
for (String w : words) {
word.set(w);
context.write(word, one);
}
}
}
这是一个 Hadoop MapReduce 程序中的 Mapper 类,用于对输入的文本进行分词,并对每个单词进行计数。其中 LongWritable 表示输入的键类型,Text 表示输入的值类型,Text 表示输出的键类型,IntWritable 表示输出的值类型。在 map 方法中,将输入的文本按空格切分成单词,然后将每个单词映射成键值对,键为单词,值为 1。最后通过 context.write 方法输出键值对。
package hadoop9999.training.exp1; import com.alibaba.fastjson.JSON; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.NullWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper; import java.io.IOException; public class ActorBestMoviesMapper extends Mapper<LongWritable, Text, MovieInfo, NullWritable>{ public static final Log log = LogFactory.getLog(ActorBestMoviesMapper.class); @Override protected void map(LongWritable key1, Text value1, Context context) throws IOException, InterruptedException { String val=value1.toString(); MovieInfo m=JSON.parseObject(val, MovieInfo.class); if(m.getActorSet().contains("李治廷")){ log.info(m.getTitle()); context.write(m, NullWritable.get()); } } }
这是一个Hadoop MapReduce程序中的Mapper类,用于实现从输入数据中筛选出演员“李治廷”参演的电影,并将其输出。具体来说,它接受的输入键值对类型为LongWritable和Text,表示输入文件中每行的偏移量和内容。在map()方法中,它首先将输入数据解析成一个MovieInfo对象,然后检查该电影的演员列表中是否包含“李治廷”,如果包含,则输出该电影对象作为键,NullWritable.get()作为值,以便在Reduce过程中对电影进行排序和去重。同时,它还使用了Log4j2日志框架记录每个被筛选出的电影标题,以便进行调试和监控。
阅读全文