大家可以帮我清除下面的错误吗?当我从hdfs文件中插入数据到hbase表时,我正在运行Mapreduce作业。使用HFileOutputFormat.class
,之前我使用MultiTableOutputFormat.class
运行相同的工作很好,但是在向hbase表中插入数据时花费了太多时间。
所以你能帮我吗?:) *
job.setMapOutputKeyClass (ImmutableBytesWritable.class);job.setMapOutputValueClass (Put.class);job.setInputFormatClass (TextInputFormat.class);
job.setOutputFormatClass (HFileOutputFormat.class);job.setMapperClass (Map.class);HTable = new HTable(conf,"ARK_3000");HFileOutputFormat。configureIncrementalLoad(工作,hTable);安全错误。UserGroupInformation: PriviledgedActionException: reddym(身份验证:简单)原因:org.apache.hadoop.mapred。InvalidJobConfException:输出未设置目录。线程"main"中的异常org.apache.hadoop.mapred.InvalidJobConfException:输出目录没有集。
谢谢Madhusudhana Reddy
确保输出目录没有写保护,然后再试一次。不要使用像驱动器根目录那样的目录。希望这对你有所帮助关于
编辑:试着在它要求你输入输出目录
的地方添加这个HFileOutputFormat.setOutputPath(conf, new Path(<YOUR_LOCATION>));
或FileOutputFormat.setOutputPath(conf, new Path(<YOUR_LOCATION>));
您需要提到输出目录,以便它知道将数据写入到哪里。
希望这有助于你进一步解决你的问题,如果你需要更多的帮助,请告诉我。因为我总是很乐意帮忙。
编辑2:您需要提到一个输出目录,因为您要写入的表存储在内存中,当您结束程序时,内存中的所有数据都会丢失。例如,如果程序崩溃,所有数据都将丢失,除非将其写入磁盘。因此,保存到输出目录的数据是一个备份,以防出现任何问题。
我希望这清楚地回答了你的问题,如果你需要更多的帮助,请留下另一个评论问候汤姆