Created 06-06-2018 07:16 PM
I am able to compile the code as follows :
javac -classpath /usr/hdp/2.6.4.0-91/hadoop/client/hadoop-common.jar:/usr/hdp/2.6.4.0-91/hbase/lib/* RetriveData.java Note: RetriveData.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details.
but I cant run it , I tried all types of libraries in the classpath
java -classpath /usr/hdp/2.6.4.0-91/hadoop/client/hadoop-common.jar:/usr/hdp/2.6.4.0-91/hbase/lib/*.jar:. RetriveData
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration
at RetriveData.main(RetriveData.java:16)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.HBaseConfiguration
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
Created 06-06-2018 07:35 PM
as you see I am using the right jar which has the HbaseConfiguration but why its not finding it ?
#java -classpath /usr/hdp/2.6.4.0-91/hadoop/client/hadoop-common.jar:. RetriveData Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration at RetriveData.main(RetriveData.java:16) Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.HBaseConfiguration at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 1 more # jar tvf /usr/hdp/2.6.4.0-91/hbase/lib/hbase-common.jar | grep "org/apache/hadoop/hbase/HBaseConfiguration" 9678 Thu Jan 04 10:27:46 EST 2018 org/apache/hadoop/hbase/HBaseConfiguration.class
Created 06-06-2018 07:35 PM
You have specified an invalid classpath. You should be using:
/usr/hdp/2.6.4.0-91/hbase/lib/*
You can read https://docs.oracle.com/javase/8/docs/technotes/tools/windows/classpath.html#A1100762 for a refresher.
Created 06-06-2018 08:54 PM
if I use that path then I get another error
[root@hadoop1 ~]# java -classpath /usr/hdp/2.6.4.0-91/hbase/lib/*:. RetriveData
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
Created 06-07-2018 01:34 AM
You didn't need to remove the other valid classpath entry that you had previously...
Created 06-06-2018 09:24 PM
also this is a centos environment and not windows
Created 06-06-2018 09:48 PM
Can you please try the following command to setup the classpath. (Please note that in the command i am using Backtick and not the single quote)
Example: ----------- # javap -classpath `hadoop classpath`:`hbase classpath`:.: RetriveData # javap -classpath `hadoop classpath`:`hbase classpath`:.: com.test.your.packagename.RetriveData For Testing: ------------ # javap -classpath `hadoop classpath`:`hbase classpath` org.apache.hadoop.hbase.HBaseConfiguration
Created 06-08-2018 03:03 PM
hi Jay i am not using a package .. how do I compile ?
# more RetriveData.java
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.util.Bytes;
public class RetriveData{
public static void main(String[] args) throws IOException, Exception{
// Instantiating Configuration class
Configuration config = HBaseConfiguration.create();
// Instantiating HTable class
HTable table = new HTable(config, "PUR_ACCT_PHX");
// Instantiating Get class
Get g = new Get(Bytes.toBytes("1001181"));
// Reading the data
Result result = table.get(g);
// Reading values from Result class object
byte [] value = result.getValue(Bytes.toBytes("cf1"),Bytes.toBytes("PUR_ID"));
byte [] value1 = result.getValue(Bytes.toBytes("cf1"),Bytes.toBytes("PUR_TRANS_DATE"));
// Printing the values
String purchaseID = Bytes.toString(value);
String purchaseDate = Bytes.toString(value1);
System.out.println("PURCASE ID: " + purchaseID + " PUR_TRANS_DATE: " + purchaseDate);
}
}