当前位置: 首页 > 知识库问答 >
问题:

正在获取Hbase异常无区域传递

逑景铄
2023-03-14

这是我的映射器代码

public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
		
		
		System.out.println("Value in Mapper"+value.toString());
		String[] values = value.toString().split(",");
         byte[] row = Bytes.toBytes(values[0]);
         ImmutableBytesWritable k = new ImmutableBytesWritable(row);
         KeyValue kvProtocol = new KeyValue(row, "PROTOCOLID".getBytes(), "PROTOCOLID".getBytes(), values[1]
                         .getBytes());
         context.write(k, kvProtocol);
}

这是我的作业配置

public class JobDriver extends Configured implements Tool{

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		ToolRunner.run(new JobDriver(), args);
		System.exit(0);

	}

	@Override
	public int run(String[] arg0) throws Exception {
		// TODO Auto-generated method stub
		
		// HBase Configuration
		System.out.println("**********Starting Hbase*************");
				Configuration conf = HBaseConfiguration.create();
                Job job = new Job(conf, "TestHFileToHBase");
                job.setJarByClass(JobDriver.class);
                job.setOutputKeyClass(ImmutableBytesWritable.class);
                job.setOutputValueClass(KeyValue.class);
                job.setMapperClass(LoadMapper.class);
                job.setOutputFormatClass(HFileOutputFormat2.class);                
                HTable table = new HTable(conf, "kiran");
                FileInputFormat.addInputPath(job, new Path("hdfs://192.168.61.62:9001/sampledata.csv"));
                FileOutputFormat.setOutputPath(job, new Path("hdfs://192.168.61.62:9001/deletions_6.csv"));
                HFileOutputFormat2.configureIncrementalLoad(job, table);
                //System.exit(job.waitForCompletion(true) ? 0 : 1);
				return job.waitForCompletion(true) ? 0 : 1;
	}
}

有谁能帮我解决一下这个例外。

共有1个答案

慕容嘉荣
2023-03-14

您必须先创建表。您可以使用下面的代码来完成

//Create table and do pre-split
HTableDescriptor descriptor = new HTableDescriptor(
Bytes.toBytes(tableName)
);

descriptor.addFamily(
new HColumnDescriptor(Constants.COLUMN_FAMILY_NAME)
);

HBaseAdmin admin = new HBaseAdmin(config);

byte[] startKey = new byte[16];
Arrays.fill(startKey, (byte) 0);

byte[] endKey = new byte[16];
Arrays.fill(endKey, (byte)255);

admin.createTable(descriptor, startKey, endKey, REGIONS_COUNT);
admin.close();

或者直接从hbase shell使用以下命令:

create 'kiran', 'colfam1'

导致异常的原因是startkeys列表为空:第306行

 类似资料:
  • 此函数转换Hbase格式的数据 这是我在第125行得到的错误:hbaseputs.saveasnewapiHadoopDataSet(job.getconfiguration)

  • 其中api为: 带有try/catch得客户端用法: 依赖项的版本为: null null ps.当假客户服务可用时,它可以工作,好的。我只关注例外方面。

  • 我使用以下代码在 NTAG213 NFC 标签上设置 AUTH0(需要密码验证的第一页): 然而,当我在AUTH0上写00h(作为起始地址)时,总是会出现异常:“收发器失败”。 你能告诉我这里可能会出什么问题吗?

  • 问题内容: 从Python标准库的组件中获取异常消息的最佳方法是什么? 我注意到在某些情况下,您可以通过如下字段获取它: 但在某些情况下(例如在套接字错误的情况下),您必须执行以下操作: 我想知道是否有标准方法可以涵盖大多数情况? 问题答案: 如果查看内置错误的文档,则会看到大多数类将其第一个参数分配为属性。并非所有人都这样做。 值得注意的是,(与子类和)具有的第一自变量,第二的。没有…大致类似于

  • 问题内容: 我在应用程序上加载一堆图像时遇到错误,我不确定是什么原因引起的。 这是他得到的错误。线135在底部。 我认为他的手机内存不足。他使用的是2010年生产的Desire HD。此方法的作用是从服务器获取图像并将其保存在哈希图中。以及将其显示在屏幕上。关于如何防止OUTMEMORYERROR的任何想法? 我当时正在考虑建立一个计数器,如果有超过20张图像,该计数器只会清除哈希图。 Logca