Мой код пытается взять костюм и ранг из входного файла и сохранить карты колоды, которые отсутствуют в HBase. Код работает правильно, если вход и выход являются текстовыми файлами, и правильно сохраняет его в HDFS.
Я следовал учебному пособию для HBase и добавил код, чтобы взять вывод и сохранить его в HBase вместо вывода файл. Как только я добавляю импорт для HBase TableMapper, TableReducer и TableMapReduceUtil, я получаю следующие ошибки:
ubuntu@ip-172-31-42-214:~/server/hadoop-2.10.0/repo/hw3$ javac cards.java -cp $(hbase classpath):$(hadoop classpath)cards.java:21: error: cannot find symbol
import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil;
^
symbol: class TableMapReduceUtil
location: package org.apache.hadoop.hbase.mapreduce
cards.java:22: error: cannot find symbol
import org.apache.hadoop.hbase.mapreduce.TableMapper;
^
symbol: class TableMapper
location: package org.apache.hadoop.hbase.mapreduce
cards.java:23: error: cannot find symbol
import org.apache.hadoop.hbase.mapreduce.TableReducer;
^
symbol: class TableReducer
location: package org.apache.hadoop.hbase.mapreduce
cards.java:82: error: cannot find symbol
public static class reduce extends TableReducer<Text, IntWritable, Text, IntWritable> {
^
symbol: class TableReducer
location: class cards
cards.java:89: error: cannot find symbol
public void reduce(Text key, Iterable<IntWritable> value, Context context)
^
symbol: class Context
location: class reduce
cards.java:39: error: cannot find symbol
Configuration conf = HbaseConfiguration.create();
^
symbol: variable HbaseConfiguration
location: class cards
cards.java:41: error: cannot find symbol
Admin admin = conn.getAdmin();
^
symbol: class Admin
location: class cards
cards.java:42: error: cannot find symbol
HTableDescriptor htdesc = new HTableDescriptor(TableName.valueOf("MissingCards"));
^
symbol: class HTableDescriptor
location: class cards
cards.java:42: error: cannot find symbol
HTableDescriptor htdesc = new HTableDescriptor(TableName.valueOf("MissingCards"));
^
symbol: class HTableDescriptor
location: class cards
cards.java:42: error: cannot find symbol
HTableDescriptor htdesc = new HTableDescriptor(TableName.valueOf("MissingCards"));
^
symbol: variable TableName
location: class cards
cards.java:43: error: cannot find symbol
HColumnDescriptor hcdesc = new HColumnDescriptor(Bytes.toBytes("cf"));
^
symbol: class HColumnDescriptor
location: class cards
cards.java:43: error: cannot find symbol
HColumnDescriptor hcdesc = new HColumnDescriptor(Bytes.toBytes("cf"));
^
symbol: class HColumnDescriptor
location: class cards
cards.java:54: error: cannot find symbol
TableMapReduceUtil.initTableReducerJob("cards", reduce.class, job);
^
symbol: variable TableMapReduceUtil
location: class cards
cards.java:121: error: cannot find symbol
put.addColumn(CF, SUIT, Bytes.toBytes(key.toString()));
^
symbol: variable SUIT
location: class reduce
14 errors
Я не уверен, что в моих классовых путях Had oop и HBase чего-то не хватает, но насколько я вижу, он включает в себя все необходимые jar-файлы:
ubuntu@ip-172-31-42-214:~/server/hadoop-2.10.0/repo/hw3$ hbase classpath
/usr/local/Hbase/conf:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/tools.jar:/usr/local/Hbase:/usr/local/Hbase/lib/shaded-clients/hbase-shaded-client-byo-hadoop-2.2.3.jar:/usr/local/Hbase/lib/client-facing-thirdparty/audience-annotations-0.5.0.jar:/usr/local/Hbase/lib/client-facing-thirdparty/commons-logging-1.2.jar:/usr/local/Hbase/lib/client-facing-thirdparty/findbugs-annotations-1.3.9-1.jar:/usr/local/Hbase/lib/client-facing-thirdparty/htrace-core4-4.2.0-incubating.jar:/usr/local/Hbase/lib/client-facing-thirdparty/log4j-1.2.17.jar:/usr/local/Hbase/lib/client-facing-thirdparty/slf4j-api-1.7.25.jar:/home/ubuntu/server/hadoop-2.10.0/etc/hadoop:/home/ubuntu/server/hadoop-2.10.0/share/hadoop/common/lib/*:/home/ubuntu/server/hadoop-2.10.0/share/hadoop/common/*:/home/ubuntu/server/hadoop-2.10.0/share/hadoop/hdfs:/home/ubuntu/server/hadoop-2.10.0/share/hadoop/hdfs/lib/*:/home/ubuntu/server/hadoop-2.10.0/share/hadoop/hdfs/*:/home/ubuntu/server/hadoop-2.10.0/share/hadoop/yarn:/home/ubuntu/server/hadoop-2.10.0/share/hadoop/yarn/lib/*:/home/ubuntu/server/hadoop-2.10.0/share/hadoop/yarn/*:/home/ubuntu/server/hadoop-2.10.0/share/hadoop/mapreduce/lib/*:/home/ubuntu/server/hadoop-2.10.0/share/hadoop/mapreduce/*
ubuntu@ip-172-31-42-214:~/server/hadoop-2.10.0/repo/hw3$ hadoop classpath
/home/ubuntu/server/hadoop-2.10.0/etc/hadoop:/home/ubuntu/server/hadoop-2.10.0/share/hadoop/common/lib/*:/home/ubuntu/server/hadoop-2.10.0/share/hadoop/common/*:/home/ubuntu/server/hadoop-2.10.0/share/hadoop/hdfs:/home/ubuntu/server/hadoop-2.10.0/share/hadoop/hdfs/lib/*:/home/ubuntu/server/hadoop-2.10.0/share/hadoop/hdfs/*:/home/ubuntu/server/hadoop-2.10.0/share/hadoop/yarn:/home/ubuntu/server/hadoop-2.10.0/share/hadoop/yarn/lib/*:/home/ubuntu/server/hadoop-2.10.0/share/hadoop/yarn/*:/home/ubuntu/server/hadoop-2.10.0/share/hadoop/mapreduce/lib/*:/home/ubuntu/server/hadoop-2.10.0/share/hadoop/mapreduce/*
Есть ли дополнительные jar-файлы, которые отсутствуют в моих classpath-файлах или изменился путь импорта в более новых версиях HBase, который не был указан в учебник я следовал? Я не смог понять это.
Я могу предоставить любую дополнительную информацию по мере необходимости. Заранее спасибо.