Example usage for org.apache.thrift.protocol TCompactProtocol TCompactProtocol

List of usage examples for org.apache.thrift.protocol TCompactProtocol TCompactProtocol

Introduction

In this page you can find the example usage for org.apache.thrift.protocol TCompactProtocol TCompactProtocol.

Prototype

public TCompactProtocol(TTransport transport) 

Source Link

Document

Create a TCompactProtocol.

Usage

From source file:org.apache.carbondata.core.writer.ThriftWriter.java

License:Apache License

/**
 * Open the file for writing./*from w w w  .  j av  a 2s. c om*/
 */
public void open() throws IOException {
    FileFactory.FileType fileType = FileFactory.getFileType(fileName);
    dataOutputStream = FileFactory.getDataOutputStream(fileName, fileType, bufferSize, append);
    binaryOut = new TCompactProtocol(new TIOStreamTransport(dataOutputStream));
}

From source file:org.apache.dubbo.rpc.protocol.nativethrift.ThriftProtocol.java

License:Apache License

private <T> T doReferFrameAndCompact(Class<T> type, URL url) throws RpcException {

    try {//from w  w w. j a  v  a2 s .  c  o m
        T thriftClient = null;
        String typeName = type.getName();
        if (typeName.endsWith(THRIFT_IFACE)) {
            String clientClsName = typeName.substring(0, typeName.indexOf(THRIFT_IFACE)) + THRIFT_CLIENT;
            Class<?> clazz = Class.forName(clientClsName);
            Constructor constructor = clazz.getConstructor(TProtocol.class);
            try {
                TSocket tSocket = new TSocket(url.getHost(), url.getPort());
                TTransport transport = new TFramedTransport(tSocket);
                TProtocol tprotocol = new TCompactProtocol(transport);
                TMultiplexedProtocol protocol = new TMultiplexedProtocol(tprotocol, typeName);
                thriftClient = (T) constructor.newInstance(protocol);
                transport.open();
                logger.info("nativethrift client opened for service(" + url + ")");
            } catch (Exception e) {
                logger.error(e.getMessage(), e);
                throw new RpcException("Fail to create remote client:" + e.getMessage(), e);
            }
        }
        return thriftClient;
    } catch (Exception e) {
        logger.error(e.getMessage(), e);
        throw new RpcException("Fail to create remote client for service(" + url + "): " + e.getMessage(), e);
    }
}

From source file:org.apache.fluo.core.oracle.OracleServer.java

License:Apache License

private OracleService.Client getOracleClient(String host, int port) {
    try {/*from   www  . jav  a 2s  .c o  m*/
        TTransport transport = new TFastFramedTransport(new TSocket(host, port));
        transport.open();
        TProtocol protocol = new TCompactProtocol(transport);
        log.info("Former leader was reachable at " + host + ":" + port);
        return new OracleService.Client(protocol);
    } catch (TTransportException e) {
        log.debug("Exception thrown in getOracleClient()", e);
    } catch (Exception e) {
        throw new RuntimeException(e);
    }

    return null;
}

From source file:org.apache.hadoop.hbase.thrift.TestThriftServerCmdLine.java

License:Apache License

private void talkToThriftServer() throws Exception {
    TSocket sock = new TSocket(InetAddress.getLocalHost().getHostName(), port);
    TTransport transport = sock;/*from w w w  . j av  a  2 s.  co m*/
    if (specifyFramed || implType.isAlwaysFramed) {
        transport = new TFramedTransport(transport);
    }

    sock.open();
    try {
        TProtocol prot;
        if (specifyCompact) {
            prot = new TCompactProtocol(transport);
        } else {
            prot = new TBinaryProtocol(transport);
        }
        Hbase.Client client = new Hbase.Client(prot);
        if (!tableCreated) {
            TestThriftServer.createTestTables(client);
            tableCreated = true;
        }
        TestThriftServer.checkTableList(client);

    } finally {
        sock.close();
    }
}

From source file:org.apache.hadoop.hbase.thrift.ThriftServerCmdLineTestBase.java

License:Apache License

private void talkToThriftServer() throws Exception {
    TSocket sock = new TSocket(InetAddress.getLocalHost().getHostName(), port);
    TTransport transport = sock;//from  ww w . j  a v a 2s  . co m
    if (specifyFramed || implType.isAlwaysFramed) {
        transport = new TFramedTransport(transport);
    }

    sock.open();
    try {
        TProtocol prot;
        if (specifyCompact) {
            prot = new TCompactProtocol(transport);
        } else {
            prot = new TBinaryProtocol(transport);
        }
        Hbase.Client client = new Hbase.Client(prot);
        TestThriftServer.doTestTableCreateDrop(client);
        TestThriftServer.doTestGetRegionInfo(client);
        TestThriftServer.doTestGetTableRegions(client);
        TestThriftServer.doTestTableMutations(client);
    } finally {
        sock.close();
    }
}

From source file:org.apache.hadoop.hbase.thrift2.TestThrift2ServerCmdLine.java

License:Apache License

@Override
protected void talkToThriftServer() throws Exception {
    TSocket sock = new TSocket(InetAddress.getLocalHost().getHostName(), port);
    TTransport transport = sock;//w  w  w  .  j av  a 2 s.c  o m
    if (specifyFramed || implType.isAlwaysFramed()) {
        transport = new TFramedTransport(transport);
    }

    sock.open();
    try {
        TProtocol tProtocol;
        if (specifyCompact) {
            tProtocol = new TCompactProtocol(transport);
        } else {
            tProtocol = new TBinaryProtocol(transport);
        }
        THBaseService.Client client = new THBaseService.Client(tProtocol);
        TTableName tTableName = new TTableName();
        tTableName.setNs(Bytes.toBytes(""));
        tTableName.setQualifier(Bytes.toBytes(TABLENAME));
        if (!tableCreated) {
            Assert.assertTrue(!client.tableExists(tTableName));
            TTableDescriptor tTableDescriptor = new TTableDescriptor();
            tTableDescriptor.setTableName(tTableName);
            TColumnFamilyDescriptor columnFamilyDescriptor = new TColumnFamilyDescriptor();
            columnFamilyDescriptor.setName(Bytes.toBytes(TABLENAME));
            tTableDescriptor.addToColumns(columnFamilyDescriptor);
            client.createTable(tTableDescriptor, new ArrayList<>());
            tableCreated = true;
        }
        Assert.assertTrue(client.tableExists(tTableName));
    } finally {
        sock.close();
    }
}

From source file:org.apache.hadoop.hdfs.protocol.TestClientProxyRequests.java

License:Apache License

@Before
public void setUp() {
    transport = new TMemoryBuffer(1024 * 1024);
    protocol = new TCompactProtocol(transport);
}

From source file:org.apache.hadoop.hive.metastore.HiveMetaStoreClientPreCatalog.java

License:Apache License

private void open() throws MetaException {
    isConnected = false;//from w w  w .  j a v a  2 s .  co  m
    TTransportException tte = null;
    boolean useSSL = MetastoreConf.getBoolVar(conf, ConfVars.USE_SSL);
    boolean useSasl = MetastoreConf.getBoolVar(conf, ConfVars.USE_THRIFT_SASL);
    boolean useFramedTransport = MetastoreConf.getBoolVar(conf, ConfVars.USE_THRIFT_FRAMED_TRANSPORT);
    boolean useCompactProtocol = MetastoreConf.getBoolVar(conf, ConfVars.USE_THRIFT_COMPACT_PROTOCOL);
    int clientSocketTimeout = (int) MetastoreConf.getTimeVar(conf, ConfVars.CLIENT_SOCKET_TIMEOUT,
            TimeUnit.MILLISECONDS);

    for (int attempt = 0; !isConnected && attempt < retries; ++attempt) {
        for (URI store : metastoreUris) {
            LOG.info("Trying to connect to metastore with URI " + store);

            try {
                if (useSSL) {
                    try {
                        String trustStorePath = MetastoreConf.getVar(conf, ConfVars.SSL_TRUSTSTORE_PATH).trim();
                        if (trustStorePath.isEmpty()) {
                            throw new IllegalArgumentException(ConfVars.SSL_TRUSTSTORE_PATH.toString()
                                    + " Not configured for SSL connection");
                        }
                        String trustStorePassword = MetastoreConf.getPassword(conf,
                                MetastoreConf.ConfVars.SSL_TRUSTSTORE_PASSWORD);

                        // Create an SSL socket and connect
                        transport = SecurityUtils.getSSLSocket(store.getHost(), store.getPort(),
                                clientSocketTimeout, trustStorePath, trustStorePassword);
                        LOG.info("Opened an SSL connection to metastore, current connections: "
                                + connCount.incrementAndGet());
                    } catch (IOException e) {
                        throw new IllegalArgumentException(e);
                    } catch (TTransportException e) {
                        tte = e;
                        throw new MetaException(e.toString());
                    }
                } else {
                    transport = new TSocket(store.getHost(), store.getPort(), clientSocketTimeout);
                }

                if (useSasl) {
                    // Wrap thrift connection with SASL for secure connection.
                    try {
                        HadoopThriftAuthBridge.Client authBridge = HadoopThriftAuthBridge.getBridge()
                                .createClient();

                        // check if we should use delegation tokens to authenticate
                        // the call below gets hold of the tokens if they are set up by hadoop
                        // this should happen on the map/reduce tasks if the client added the
                        // tokens into hadoop's credential store in the front end during job
                        // submission.
                        String tokenSig = MetastoreConf.getVar(conf, ConfVars.TOKEN_SIGNATURE);
                        // tokenSig could be null
                        tokenStrForm = SecurityUtils.getTokenStrForm(tokenSig);

                        if (tokenStrForm != null) {
                            LOG.info(
                                    "HMSC::open(): Found delegation token. Creating DIGEST-based thrift connection.");
                            // authenticate using delegation tokens via the "DIGEST" mechanism
                            transport = authBridge.createClientTransport(null, store.getHost(), "DIGEST",
                                    tokenStrForm, transport,
                                    MetaStoreUtils.getMetaStoreSaslProperties(conf, useSSL));
                        } else {
                            LOG.info(
                                    "HMSC::open(): Could not find delegation token. Creating KERBEROS-based thrift connection.");
                            String principalConfig = MetastoreConf.getVar(conf, ConfVars.KERBEROS_PRINCIPAL);
                            transport = authBridge.createClientTransport(principalConfig, store.getHost(),
                                    "KERBEROS", null, transport,
                                    MetaStoreUtils.getMetaStoreSaslProperties(conf, useSSL));
                        }
                    } catch (IOException ioe) {
                        LOG.error("Couldn't create client transport", ioe);
                        throw new MetaException(ioe.toString());
                    }
                } else {
                    if (useFramedTransport) {
                        transport = new TFramedTransport(transport);
                    }
                }

                final TProtocol protocol;
                if (useCompactProtocol) {
                    protocol = new TCompactProtocol(transport);
                } else {
                    protocol = new TBinaryProtocol(transport);
                }
                client = new ThriftHiveMetastore.Client(protocol);
                try {
                    if (!transport.isOpen()) {
                        transport.open();
                        LOG.info("Opened a connection to metastore, current connections: "
                                + connCount.incrementAndGet());
                    }
                    isConnected = true;
                } catch (TTransportException e) {
                    tte = e;
                    if (LOG.isDebugEnabled()) {
                        LOG.warn("Failed to connect to the MetaStore Server...", e);
                    } else {
                        // Don't print full exception trace if DEBUG is not on.
                        LOG.warn("Failed to connect to the MetaStore Server...");
                    }
                }

                if (isConnected && !useSasl && MetastoreConf.getBoolVar(conf, ConfVars.EXECUTE_SET_UGI)) {
                    // Call set_ugi, only in unsecure mode.
                    try {
                        UserGroupInformation ugi = SecurityUtils.getUGI();
                        client.set_ugi(ugi.getUserName(), Arrays.asList(ugi.getGroupNames()));
                    } catch (LoginException e) {
                        LOG.warn("Failed to do login. set_ugi() is not successful, " + "Continuing without it.",
                                e);
                    } catch (IOException e) {
                        LOG.warn("Failed to find ugi of client set_ugi() is not successful, "
                                + "Continuing without it.", e);
                    } catch (TException e) {
                        LOG.warn("set_ugi() not successful, Likely cause: new client talking to old server. "
                                + "Continuing without it.", e);
                    }
                }
            } catch (MetaException e) {
                LOG.error("Unable to connect to metastore with URI " + store + " in attempt " + attempt, e);
            }
            if (isConnected) {
                break;
            }
        }
        // Wait before launching the next round of connection retries.
        if (!isConnected && retryDelaySeconds > 0) {
            try {
                LOG.info("Waiting " + retryDelaySeconds + " seconds before next connection attempt.");
                Thread.sleep(retryDelaySeconds * 1000);
            } catch (InterruptedException ignore) {
            }
        }
    }

    if (!isConnected) {
        throw new MetaException("Could not connect to meta store using any of the URIs provided."
                + " Most recent failure: " + StringUtils.stringifyException(tte));
    }

    snapshotActiveConf();

    LOG.info("Connected to metastore.");
}

From source file:org.apache.hadoop.hive.metastore.tools.HMSClient.java

License:Apache License

private TTransport open(Configuration conf, @NotNull URI uri) throws TException, IOException, LoginException {
    boolean useSSL = MetastoreConf.getBoolVar(conf, MetastoreConf.ConfVars.USE_SSL);
    boolean useSasl = MetastoreConf.getBoolVar(conf, MetastoreConf.ConfVars.USE_THRIFT_SASL);
    boolean useFramedTransport = MetastoreConf.getBoolVar(conf,
            MetastoreConf.ConfVars.USE_THRIFT_FRAMED_TRANSPORT);
    boolean useCompactProtocol = MetastoreConf.getBoolVar(conf,
            MetastoreConf.ConfVars.USE_THRIFT_COMPACT_PROTOCOL);
    int clientSocketTimeout = (int) MetastoreConf.getTimeVar(conf, MetastoreConf.ConfVars.CLIENT_SOCKET_TIMEOUT,
            TimeUnit.MILLISECONDS);

    LOG.debug("Connecting to {}, framedTransport = {}", uri, useFramedTransport);

    String host = uri.getHost();/*w w w  .  j av  a 2s .  c  o m*/
    int port = uri.getPort();

    // Sasl/SSL code is copied from HiveMetastoreCLient
    if (!useSSL) {
        transport = new TSocket(host, port, clientSocketTimeout);
    } else {
        String trustStorePath = MetastoreConf.getVar(conf, MetastoreConf.ConfVars.SSL_TRUSTSTORE_PATH).trim();
        if (trustStorePath.isEmpty()) {
            throw new IllegalArgumentException(MetastoreConf.ConfVars.SSL_TRUSTSTORE_PATH.toString()
                    + " Not configured for SSL connection");
        }
        String trustStorePassword = MetastoreConf.getPassword(conf,
                MetastoreConf.ConfVars.SSL_TRUSTSTORE_PASSWORD);

        // Create an SSL socket and connect
        transport = SecurityUtils.getSSLSocket(host, port, clientSocketTimeout, trustStorePath,
                trustStorePassword);
        LOG.info("Opened an SSL connection to metastore, current connections");
    }

    if (useSasl) {
        // Wrap thrift connection with SASL for secure connection.
        HadoopThriftAuthBridge.Client authBridge = HadoopThriftAuthBridge.getBridge().createClient();

        // check if we should use delegation tokens to authenticate
        // the call below gets hold of the tokens if they are set up by hadoop
        // this should happen on the map/reduce tasks if the client added the
        // tokens into hadoop's credential store in the front end during job
        // submission.
        String tokenSig = MetastoreConf.getVar(conf, MetastoreConf.ConfVars.TOKEN_SIGNATURE);
        // tokenSig could be null
        String tokenStrForm = SecurityUtils.getTokenStrForm(tokenSig);

        if (tokenStrForm != null) {
            LOG.info("HMSC::open(): Found delegation token. Creating DIGEST-based thrift connection.");
            // authenticate using delegation tokens via the "DIGEST" mechanism
            transport = authBridge.createClientTransport(null, host, "DIGEST", tokenStrForm, transport,
                    MetaStoreUtils.getMetaStoreSaslProperties(conf, useSSL));
        } else {
            LOG.info(
                    "HMSC::open(): Could not find delegation token. Creating KERBEROS-based thrift connection.");
            String principalConfig = MetastoreConf.getVar(conf, MetastoreConf.ConfVars.KERBEROS_PRINCIPAL);
            transport = authBridge.createClientTransport(principalConfig, host, "KERBEROS", null, transport,
                    MetaStoreUtils.getMetaStoreSaslProperties(conf, useSSL));
        }
    } else {
        if (useFramedTransport) {
            transport = new TFramedTransport(transport);
        }
    }

    final TProtocol protocol;
    if (useCompactProtocol) {
        protocol = new TCompactProtocol(transport);
    } else {
        protocol = new TBinaryProtocol(transport);
    }
    client = new ThriftHiveMetastore.Client(protocol);
    if (!transport.isOpen()) {
        transport.open();
        LOG.info("Opened a connection to metastore, current connections");

        if (!useSasl && MetastoreConf.getBoolVar(conf, MetastoreConf.ConfVars.EXECUTE_SET_UGI)) {
            // Call set_ugi, only in unsecure mode.
            try {
                UserGroupInformation ugi = SecurityUtils.getUGI();
                client.set_ugi(ugi.getUserName(), Arrays.asList(ugi.getGroupNames()));
            } catch (LoginException e) {
                LOG.warn("Failed to do login. set_ugi() is not successful, " + "Continuing without it.", e);
            } catch (IOException e) {
                LOG.warn(
                        "Failed to find ugi of client set_ugi() is not successful, " + "Continuing without it.",
                        e);
            } catch (TException e) {
                LOG.warn("set_ugi() not successful, Likely cause: new client talking to old server. "
                        + "Continuing without it.", e);
            }
        }
    }

    LOG.debug("Connected to metastore, using compact protocol = {}", useCompactProtocol);
    return transport;
}

From source file:org.apache.hive.service.cli.ColumnBasedSet.java

License:Apache License

public ColumnBasedSet(TRowSet tRowSet) throws TException {
    descriptors = null;//from ww w  .  j  a va  2s . c  om
    columns = new ArrayList<ColumnBuffer>();
    // Use TCompactProtocol to read serialized TColumns
    if (tRowSet.isSetBinaryColumns()) {
        TProtocol protocol = new TCompactProtocol(
                new TIOStreamTransport(new ByteArrayInputStream(tRowSet.getBinaryColumns())));
        // Read from the stream using the protocol for each column in final schema
        for (int i = 0; i < tRowSet.getColumnCount(); i++) {
            TColumn tvalue = new TColumn();
            try {
                tvalue.read(protocol);
            } catch (TException e) {
                LOG.error(e.getMessage(), e);
                throw new TException("Error reading column value from the row set blob", e);
            }
            columns.add(new ColumnBuffer(tvalue));
        }
    } else {
        if (tRowSet.getColumns() != null) {
            for (TColumn tvalue : tRowSet.getColumns()) {
                columns.add(new ColumnBuffer(tvalue));
            }
        }
    }
    startOffset = tRowSet.getStartRowOffset();
}