1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.hadoop.hbase.mapreduce;
21
22 import java.io.IOException;
23
24 import org.apache.commons.logging.Log;
25 import org.apache.commons.logging.LogFactory;
26 import org.apache.hadoop.conf.Configurable;
27 import org.apache.hadoop.conf.Configuration;
28 import org.apache.hadoop.hbase.HBaseConfiguration;
29 import org.apache.hadoop.hbase.client.HTable;
30 import org.apache.hadoop.hbase.client.Scan;
31 import org.apache.hadoop.hbase.util.Bytes;
32 import org.apache.hadoop.util.StringUtils;
33
34
35
36
37 public class TableInputFormat extends TableInputFormatBase
38 implements Configurable {
39
40 private final Log LOG = LogFactory.getLog(TableInputFormat.class);
41
42
43 public static final String INPUT_TABLE = "hbase.mapreduce.inputtable";
44
45
46
47 public static final String SCAN = "hbase.mapreduce.scan";
48
49 public static final String SCAN_COLUMN_FAMILY = "hbase.mapreduce.scan.column.family";
50
51 public static final String SCAN_COLUMNS = "hbase.mapreduce.scan.columns";
52
53 public static final String SCAN_TIMESTAMP = "hbase.mapreduce.scan.timestamp";
54
55 public static final String SCAN_TIMERANGE_START = "hbase.mapreduce.scan.timerange.start";
56
57 public static final String SCAN_TIMERANGE_END = "hbase.mapreduce.scan.timerange.end";
58
59 public static final String SCAN_MAXVERSIONS = "hbase.mapreduce.scan.maxversions";
60
61 public static final String SCAN_CACHEBLOCKS = "hbase.mapreduce.scan.cacheblocks";
62
63 public static final String SCAN_CACHEDROWS = "hbase.mapreduce.scan.cachedrows";
64
65
66 private Configuration conf = null;
67
68
69
70
71
72
73
74 @Override
75 public Configuration getConf() {
76 return conf;
77 }
78
79
80
81
82
83
84
85
86
87 @Override
88 public void setConf(Configuration configuration) {
89 this.conf = configuration;
90 String tableName = conf.get(INPUT_TABLE);
91 try {
92 setHTable(new HTable(HBaseConfiguration.create(conf), tableName));
93 } catch (Exception e) {
94 LOG.error(StringUtils.stringifyException(e));
95 }
96
97 Scan scan = null;
98
99 if (conf.get(SCAN) != null) {
100 try {
101 scan = TableMapReduceUtil.convertStringToScan(conf.get(SCAN));
102 } catch (IOException e) {
103 LOG.error("An error occurred.", e);
104 }
105 } else {
106 try {
107 scan = new Scan();
108
109 if (conf.get(SCAN_COLUMNS) != null) {
110 scan.addColumns(conf.get(SCAN_COLUMNS));
111 }
112
113 if (conf.get(SCAN_COLUMN_FAMILY) != null) {
114 scan.addFamily(Bytes.toBytes(conf.get(SCAN_COLUMN_FAMILY)));
115 }
116
117 if (conf.get(SCAN_TIMESTAMP) != null) {
118 scan.setTimeStamp(Long.parseLong(conf.get(SCAN_TIMESTAMP)));
119 }
120
121 if (conf.get(SCAN_TIMERANGE_START) != null && conf.get(SCAN_TIMERANGE_END) != null) {
122 scan.setTimeRange(
123 Long.parseLong(conf.get(SCAN_TIMERANGE_START)),
124 Long.parseLong(conf.get(SCAN_TIMERANGE_END)));
125 }
126
127 if (conf.get(SCAN_MAXVERSIONS) != null) {
128 scan.setMaxVersions(Integer.parseInt(conf.get(SCAN_MAXVERSIONS)));
129 }
130
131 if (conf.get(SCAN_CACHEDROWS) != null) {
132 scan.setCaching(Integer.parseInt(conf.get(SCAN_CACHEDROWS)));
133 }
134
135
136 scan.setCacheBlocks((conf.getBoolean(SCAN_CACHEBLOCKS, false)));
137 } catch (Exception e) {
138 LOG.error(StringUtils.stringifyException(e));
139 }
140 }
141
142 setScan(scan);
143 }
144
145 }