java hexits,"main" java.io.IOException: Mkdirs failed to create /user/centos/hbase-staging (exists=....

packagebulkloadExample;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.FileSystem;importorg.apache.hadoop.fs.Path;importorg.apache.hadoop.hbase.HBaseConfiguration;importorg.apache.hadoop.hbase.TableName;importorg.apache.hadoop.hbase.client.Connection;importorg.apache.hadoop.hbase.client.ConnectionFactory;importorg.apache.hadoop.hbase.client.Put;importorg.apache.hadoop.hbase.io.ImmutableBytesWritable;importorg.apache.hadoop.hbase.mapreduce.HFileOutputFormat2;importorg.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles;importorg.apache.hadoop.hbase.mapreduce.PutSortReducer;importorg.apache.hadoop.hbase.mapreduce.TableMapReduceUtil;importorg.apache.hadoop.hbase.util.Bytes;importorg.apache.hadoop.io.LongWritable;importorg.apache.hadoop.io.Text;importorg.apache.hadoop.mapreduce.Job;importorg.apache.hadoop.mapreduce.Mapper;importorg.apache.hadoop.mapreduce.lib.input.FileInputFormat;importorg.apache.hadoop.mapreduce.lib.output.FileOutputFormat;importjava.io.IOException;importjava.net.URI;public classBulkloadData {static final String JOBNAME = "BulkLoad";static final String TABLENAME = "wqbin:duowan_user_bulkLoad";static final String PATH_IN = "/datain/duowan_user.txt"; //输入路径

static final String PATH_OUT = "/dataout"; //输入路径HFILE

static final String SEPARATOR = "\t";static final byte[] ColumnFamily = "f".getBytes(); //列簇//static final byte[] row_id = "id".getBytes();//列名

static final byte[] name = "name".getBytes();static final byte[] pass = "pass".getBytes();static final byte[] mail = "mail".getBytes();static final byte[] nickname = "nickname".getBytes();public static class Map extends Mapper{protected void map(LongWritable key, Text value, Context context) throwsIOException, InterruptedException {

String[] strArr=value.toString().split(SEPARATOR);

String row= strArr[0];

Put put= new Put(Bytes.toBytes(row.toString())); //rowkey

put.add(ColumnFamily, name, Bytes.toBytes(strArr[1]));

put.add(ColumnFamily, pass, Bytes.toBytes(strArr[2]));

put.add(ColumnFamily, mail, Bytes.toBytes(strArr[3]));

put.add(ColumnFamily, nickname, Bytes.toBytes(strArr[3]));

context.write(newImmutableBytesWritable(value.getBytes()), put);

}

}public static void main(String[] args) throwsException {

Configuration conf=HBaseConfiguration.create();

Connection conn=ConnectionFactory.createConnection(conf);//conf.set("hbase.zookeeper.quorum", "xx,xx,xx");

conf.set("fs.defaultFS","file:///");

System.setProperty("HADOOP_USER_NAME", "centos");

Job job=Job.getInstance(conf, JOBNAME);

job.setJarByClass(BulkloadData.class);

job.setMapOutputKeyClass(ImmutableBytesWritable.class);

job.setMapOutputValueClass(Put.class);

TableMapReduceUtil.addDependencyJars(job);

job.setMapperClass(Map.class);//这个 SorterReducer(KeyValueSortReducer或PutSortReducer) 可以不指定,//因为源码中已经做了判断

job.setReducerClass(PutSortReducer.class);

job.setOutputFormatClass(HFileOutputFormat2.class);

FileSystem fs= FileSystem.get(URI.create("/"),conf);

Path outPath= newPath(PATH_OUT);//if (fs.exists(outPath))fs.delete(outPath, true);

FileOutputFormat.setOutputPath(job, outPath);

FileInputFormat.setInputPaths(job,newPath(PATH_IN));//HTable table = new HTable(conf, TABLENAME);

HFileOutputFormat2.configureIncrementalLoad(job, conn.getTable(TableName.valueOf(TABLENAME)),

conn.getRegionLocator(TableName.valueOf(TABLENAME)));

System.out.println("load完毕");if(job.waitForCompletion(true)){

LoadIncrementalHFiles loader= newLoadIncrementalHFiles(conf);//loader.doBulkLoad( table);

}

System.exit(0);

}

}

遇到`java.io.IOException: Cannot write to data directory`这类错误时,通常意味着Java程序试图写入某个目录但权限不足或者路径不存在。具体到这个情况[^1]: > Caused by: java.io.IOException: Failed to create directory /opt/module/hive/temp/a4d1e37e-45c9-...` 时发生了问题,可能是由于权限问题(如无写权限),或者是路径本身有问题。 要解决这个问题,你可以尝试以下几个步骤: 1. **检查权限**:确认当前用户对 `/opt/module/hive/temp` 目录是否有足够的写权限。如果是权限问题,可能需要修改文件系统的权限设置,或者以具有相应权限的用户身份运行程序。 ```bash chmod -R u+wx /opt/module/hive/temp ``` 2. **清理并重新创建目录**:如果目录存在且权限正常,但仍然无法创建,可以先删除该目录,然后尝试重新创建。 ```bash rm -rf /opt/module/hive/temp/a4d1e37e-a733-45c9-... mkdir -p /opt/module/hive/temp/a4d1e37e-a733-45c9-... ``` 3. **检查路径**:确保指定的路径不存在其他已占用的资源,或者在不同的分区或磁盘上创建目录。 4. **日志分析**:查看应用程序的日志文件,可能会有更详细的错误信息帮助定位问题。 如果你正在编写Java程序,可以在代码中添加异常处理来捕获并适当地记录此类异常,以便于调试: ```java try { File dir = new File("/opt/module/hive/temp/a4d1e37e-a733-45c9..."); if (!dir.mkdirs()) { throw new IOException("Failed to create directory " + dir.getAbsolutePath()); } } catch (IOException e) { // Handle the exception e.printStackTrace(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值