Tag: thrift

通过JDBC连接到Hive时,Java NoSuchMethodError

尝试从Eclipse中的简单Java程序连接到Hive时,我收到以下错误。 看起来它连接然后抛出此错误。 我可以通过直线本地连接到Hive Thrift服务器而不会出现问题。 libthrift .jar文件都是0.9.2。 在客户端和服务器上相同。 以下.jar文件的服务器和客户端版本是相同的: hive-jdbc*.jar 1.2.0 hive-service*.jar 1.2.0 libfb303-0.9.0.jar 0.9.2 libthrift-0.9.0.jar 0.9.2 log4j-1.2.16.jar 1.2.16 slf4j-api-1.6.1.jar 1.7.5 slf4j-log4j12-1.6.1.jar 1.7.5 commons-logging-1.0.4.jar 1.1.3 Exception in thread “main” java.lang.NoSuchMethodError: org.apache.thrift.protocol.TProtocol.getScheme()Ljava/lang/Class; at org.apache.hive.service.cli.thrift.TCLIService$OpenSession_args.write(TCLIService.java:1854) at org.apache.thrift.TServiceClient.sendBase(TServiceClient.java:63) at org.apache.hive.service.cli.thrift.TCLIService$Client.send_OpenSession(TCLIService.java:150) at org.apache.hive.service.cli.thrift.TCLIService$Client.OpenSession(TCLIService.java:142) at org.apache.hive.jdbc.HiveConnection.openSession(HiveConnection.java:578) at org.apache.hive.jdbc.HiveConnection.(HiveConnection.java:192) at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) 我正在使用的libthrift版本被Apache列为具有getScheme()方法。 任何帮助将不胜感激!

如何从Hive Thrift客户端运行Sqoop导入到Hive Thrift服务器?

使用JDBC我可以轻松连接并能够使用以下示例代码运行Hive-QL查询: – Connection con = DriverManager.getConnection(“jdbc:hive2://192.168.56.102:10000/default”, “”, “”); Statement stmt = con.createStatement(); String tableName = “testHiveDriverTable1”; stmt.executeQuery(“create table ” + tableName + ” (key int, value string)”); 这意味着我能够与Hive进行通信。 现在我也想执行sqoop。 我该怎么做? 我是通过命令行完成的,请参阅以下示例导入 sqoop import –connect jdbc:mysql://192.168.56.101:3316/dw_db –username=user –password=pwd –table active_list –hive-import -m 1 — –schema default 这怎么可能成为现实。 并确保运行在10000端口的服务器是Hive thrift Server? 如果是,那么如何让它在Hive上执行我的sqoop查询呢?

如何在Java中对Hive进行异步调用?

我想以异步方式在服务器上执行Hive查询。 Hive查询可能需要很长时间才能完成,所以我不想阻止通话。 我目前正在使用Thirft进行阻塞调用(在client.execute()上阻塞),但我还没有看到如何进行非阻塞调用的示例。 这是阻止代码: TSocket transport = new TSocket(“hive.example.com”, 10000); transport.setTimeout(999999999); TBinaryProtocol protocol = new TBinaryProtocol(transport); Client client = new ThriftHive.Client(protocol); transport.open(); client.execute(hql); // Omitted HQL List rows; while ((rows = client.fetchN(1000)) != null) { for (String row : rows) { // Do stuff with row } } transport.close(); 上面的代码缺少try / catch块来保持简短。 有没有人有任何想法如何进行异步调用? Hive / […]

使用Javascript客户端的Thrift Java服务器OutOfMemoryError

我昨天开始学习节俭。 经过大量的努力,我成功地执行了Java教程。 Java服务器和客户端运行正常。 但现在,我想要一个javascript客户端与Java Thrift服务器进行通信。 为此,我将所有js文件移动到js/文件夹中。 并粘贴index.html代码如下: Thrift Javascript Bindings – Tutorial Example //<![CDATA[ $(document).ready(function(){ // remove pseudo child required for valid xhtml strict $("#op").children().remove(); // add operations to it's dropdown menu $.each(Operation, function(key, value) { $('#op').append($("”).attr(“value”,value).text(key)); }); $(‘table.calculator’).attr(‘width’, 500); }); function calc() { var transport = new Thrift.Transport(“http://localhost:9090”); var protocol = new Thrift.Protocol(transport); var […]

使用thrift json序列化将对象转换为JSON字符串

我是节俭的新手。 我需要使用Thrift JSON序列化将我的数据对象转换为JSON string 。 我试过这种方式。 TSerializer serializer = new TSerializer(new TSimpleJSONProtocol.Factory()); String json = serializer.toString(object_name); 在这里是一个错误, object_name应该在TBase 。 我该如何解决这个问题?

如何在Gradle和IntelliJ中将生成的源文件夹添加到源路径?

我使用thrift并在构建目录下生成一些源java文件(接口) (build/generated-sources/thrift//)但在我的src/main/java我有我的类具有相同的包定义在生成的java文件中,我的类也实现了thrift生成的接口,所以如何在build.gradle中配置它,以便它可以在i ntelliJ和build上工作 plugins { id “org.jruyi.thrift” version “0.3.1” } apply plugin: ‘idea’ apply plugin: ‘java’ apply plugin: ‘maven’ apply plugin: “org.jruyi.thrift” group ‘com.hello’ version ‘1.0-SNAPSHOT’ sourceCompatibility = 1.5 repositories { mavenCentral() } dependencies { compile group: ‘org.apache.thrift’, name: ‘libthrift’, version:’0.9.3′ compile ‘com.datastax.cassandra:cassandra-driver-core:3.0.0’ compile ‘com.datastax.cassandra:cassandra-driver-mapping:3.0.0’ testCompile group: ‘junit’, name: ‘junit’, version: ‘4.11’ } compileThrift { […]

节俭 – 从简单的JSON转换

我创建了以下Thrift对象: struct Student{ 1: string id; 2: string firstName; 3: string lastName } 现在我想从JSON中读取这个对象。 根据这篇文章,这是可能的 所以我写了下面的代码: String json = “{\”id\”:\”aaa\”,\”firstName\”:\”Danny\”,\”lastName\”:\”Lesnik\”}”; StudentThriftObject s = new StudentThriftObject(); byte[] jsonAsByte = json.getBytes(“UTF-8”); TMemoryBuffer memBuffer = new TMemoryBuffer(jsonAsByte.length); memBuffer.write(jsonAsByte); TProtocol proto = new TJSONProtocol(memBuffer); s.read(proto); 我得到的是以下exception: Exception in thread “main” org.apache.thrift.protocol.TProtocolException: Unexpected character:i at org.apache.thrift.protocol.TJSONProtocol.readJSONSyntaxChar(TJSONProtocol.java:322) at org.apache.thrift.protocol.TJSONProtocol.readJSONInteger(TJSONProtocol.java:698) at org.apache.thrift.protocol.TJSONProtocol.readFieldBegin(TJSONProtocol.java:837) […]

Hbase客户端ConnectionLoss for / hbase错误

我疯了: 安装好的Hadoop / Hbase都在运行; /opt/jdk1.6.0_24/bin/jps 23261 ThriftServer 22582 QuorumPeerMain 21969 NameNode 23500 Jps 23021 HRegionServer 22211 TaskTracker 22891 HMaster 22117 SecondaryNameNode 21779 DataNode 22370 Main 22704 JobTracker 伪分布式环境。 hbase shell 正在运行并提出运行’list’的正确结果; hbase shell HBase Shell; enter ‘help’ for list of supported commands. Type “exit” to leave the HBase Shell Version 0.90.1-cdh3u0, r, Fri Mar 25 […]

Thrift无法从json反序列化为java对象

我从以下thrift对象生成了一个java对象: struct Account { 1: required string accountType, 2: bool accountActive, } 我编写了一个java代码,试图将java对象序列化为json字符串,然后将json字符串反序列化为java对象。 我可以成功序列化但无法反序列化。 TSerializer serializer = new TSerializer(new TSimpleJSONProtocol.Factory()); TDeserializer deserializer = new TDeserializer(new TSimpleJSONProtocol.Factory()); Account a1 = new Account(); a1.setAccountType(“P”); a1.setAccountActive(true); String json = serializer.toString(a1); System.out.println(json); Account a2 = new Account(); deserializer.deserialize(a2, json, “UTF-8”); System.out.println(a2); System.out.println(a2.getAccountType()); 它不断抛出以下exception: Exception in thread “main” org.apache.thrift.protocol.TProtocolException: Required […]

使用Apache Thrift进行服务多路复用

服务器代码: TMultiplexedProcessor processor = new TMultiplexedProcessor(); processor.registerProcessor( “AddService”, new AddService.Processor(new AddHandler())); processor.registerProcessor( “MultiplyService”, new MultiplyService.Processor(new MultiplyHandler())); TServerTransport serverTransport = new TServerSocket(7911); TSimpleServer server = new TSimpleServer(new TSimpleServer.Args(serverTransport). processor(processor)); System.out.println(“Starting server on port 7911 …”); server.serve(); 客户代码: TFramedTransport transport; transport = new TFramedTransport(new TSocket(“localhost”, 7911)); transport.open(); TProtocol protocol = new TBinaryProtocol(transport); System.out.println(“1”); TMultiplexedProtocol mp = new […]