我们有一张TTL为30天的桌子。表中没有为列或单元格定义的其他TTL。
hbase(main):001:0> desc 'server_based_data'
Table server_based_data is ENABLED
server_based_data
COLUMN FAMILIES DESCRIPTION
{NAME => 'raw_data', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'SNAPPY', MIN_VERSIONS => '0', TTL => '2592000 SECONDS (30 DAYS)'
, KEEP_DELETED_CELLS => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}
然而,当我对它进行扫描时,似乎它正在查找/运行到由于TTL过期而应删除所有单元格的rowkeys。我知道这是因为时间戳是密钥的一部分,例如hash_servername_timestamp或65_app129041.iad1.mydomain.com_1476641940
1476641940是2016年10月16日。我从下午3点到下午4点进行扫描6/26/2017
这是我的扫描对象/代码的片段,用于处理结果。
Scan scan = new Scan();
scan.addColumn(Bytes.toBytes("raw_data"), Bytes.toBytes(fileType));
scan.setCaching(500);
scan.setCacheBlocks(false);
scan.setTimeRange(start, end);
TableMapReduceUtil.initTableMapperJob(tableName, scan, MTTRMapper.class, Text.class, IntWritable.class, job);
我的工作失败(我认为),因为太多的地图工作失败/被杀死。以下是失败的地图作业的其中一个日志的片段。
错误:org.apache.hadoop.hbase.client.RetriesExhaustedException: 尝试= 36后失败,例外:2017年6月28日星期三13:46:57, null,java.net.SocketTimeoutException:callTimeout = 120000, callDuration = 120301:row' 65_app129041.iad1.mydomain.com_1476641940' 在桌面' server_based_data'在region = server_based_data
我尝试手动获取一些行的内容但没有返回(按预期方式)
get 'server_based_data', '65_app129041.iad1.mydomain.com_1476641940'
COLUMN CELL
0 row(s) in 0.2900 seconds
我的问题是: