getting getTempPath error when using where clause in query.

19 views
Skip to first unread message

santlal gupta

unread,
Apr 4, 2016, 11:13:05 AM4/4/16
to Lingual User
Hi,

i want to read hdfs data using jdbc, by using cascading lingual. but I am getting getTempPath error. Below is my code.

code : 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import cascading.tap.hadoop.Hfs;

public class clusterTest {

public static void main(String[] args) throws ClassNotFoundException, SQLException {

Class.forName("cascading.lingual.jdbc.Driver");
Connection connection = DriverManager
.getConnection("jdbc:lingual:hadoop2-mr1;catalog=/user/hduser/;schema=/home/hduser/myEmp");
Statement statement = connection.createStatement();
System.out.println("Statement created");
String query="select \"id\" from \"LOG\".\"LOG\" where \"name\"='AAA'" ;
ResultSet resultSet = statement.executeQuery(query);
System.out.println("Result Set created");
while (resultSet.next()) {
int n = resultSet.getMetaData().getColumnCount();
StringBuilder builder = new StringBuilder();
System.out.println("Run");
for (int i = 1; i <= n; i++) {
builder.append(
(i > 1 ? "; " : "") + resultSet.getMetaData().getColumnLabel(i) + "=" + resultSet.getObject(i));
}
System.out.println(builder);
}
resultSet.close();
statement.close();
connection.close();
}
}

after executing this code i got following error: 
{utcTimestamp=1459778842534, currentTimestamp=1459798642534, localTimestamp=1459798642534, timeZone=sun.util.calendar.ZoneInfo[id="Asia/Kolkata",offset=19800000,dstSavings=0,useDaylight=false,transitions=6,lastRule=null]}
16/04/04 19:37:31 ERROR jdbc.LingualStatement: failed with: cascading.tap.hadoop.Hfs.getTempPath(Lorg/apache/hadoop/mapred/JobConf;)Lorg/apache/hadoop/fs/Path;
java.lang.NoSuchMethodError: cascading.tap.hadoop.Hfs.getTempPath(Lorg/apache/hadoop/mapred/JobConf;)Lorg/apache/hadoop/fs/Path;
Exception in thread "main" java.lang.NoSuchMethodError: cascading.tap.hadoop.Hfs.getTempPath(Lorg/apache/hadoop/mapred/JobConf;)Lorg/apache/hadoop/fs/Path;

In this same example if i run the query 
String query="select \"id\" from \"LOG\".\"LOG\" " ; // it will work fine.

but when in same query, i use where clause then only i got this error. 
i checked the source code of cascading-hadoop2-mr1-3.0.3.jar, but it contains getTempPath method

I have used following jars : 
Hadoop-version = Hadoop 2.6.0-cdh5.4.2
lingual-hadoop2-mr1-1.2.1-wip-48.jar
optiq-core-0.4.12.4.jar
lingual-platform-1.2.1.jar
lingual-core-1.2.1.jar
cascading-bind-1.0.0-wip-106.jar
eigenbase-resgen-1.3.6.jar
cascading-hadoop2-mr1-3.0.3.jar
cascading-core-3.0.3.jar
eigenbase-properties-1.1.4.jar
hadoop-mapreduce-client-hs-2.6.0.jar
etc..


Thanks
Santlal Gupta


Reply all
Reply to author
Forward
0 new messages