2016-08-15 6 views
3

私はCassandra-2.2.7をtarボールでインストールしました。カッサンドラはうまくいき、キースペースにテーブルを作成しました。今私はHDFSにこのテーブルのデータを転送したいと思います。私はSqoop-1.4.6を使用しています。私はSqoopを使ってCassandraからHadoopにデータを転送しようとしたときにエラーが発生しました

Warning: /usr/lib/sqoop/../hcatalog does not exist! HCatalog jobs will fail. 
 
Please set $HCAT_HOME to the root of your HCatalog installation. 
 
Warning: /usr/lib/sqoop/../accumulo does not exist! Accumulo imports will fail. 
 
Please set $ACCUMULO_HOME to the root of your Accumulo installation. 
 
16/08/15 16:52:41 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6 
 
16/08/15 16:52:41 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead. 
 
16/08/15 16:52:41 WARN sqoop.ConnFactory: Parameter --driver is set to an explicit driver however appropriate connection manager is not being set (via --connection-manager). Sqoop is going to fall back to org.apache.sqoop.manager.GenericJdbcManager. Please specify explicitly which connection manager should be used next time. 
 
16/08/15 16:52:41 INFO manager.SqlManager: Using default fetchSize of 1000 
 
SLF4J: Class path contains multiple SLF4J bindings. 
 
SLF4J: Found binding in [jar:file:/usr/lib/hadoop/hadoop-1.2.1/lib/sf2hadoop.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
 
SLF4J: Found binding in [jar:file:/usr/lib/hadoop/hadoop-1.2.1/lib/slf4j-log4j12-1.4.3.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
 
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 
 
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder] 
 
16/08/15 16:52:41 ERROR manager.SqlManager: Error reading database metadata: java.sql.SQLNonTransientConnectionException: org.apache.thrift.transport.TTransportException 
 
java.sql.SQLNonTransientConnectionException: org.apache.thrift.transport.TTransportException 
 
\t at org.apache.cassandra.cql.jdbc.CassandraConnection.<init>(CassandraConnection.java:159) 
 
\t at org.apache.cassandra.cql.jdbc.CassandraDriver.connect(CassandraDriver.java:92) 
 
\t at java.sql.DriverManager.getConnection(DriverManager.java:664) 
 
\t at java.sql.DriverManager.getConnection(DriverManager.java:247) 
 
\t at org.apache.sqoop.manager.SqlManager.makeConnection(SqlManager.java:885) 
 
\t at org.apache.sqoop.manager.GenericJdbcManager.getConnection(GenericJdbcManager.java:52) 
 
\t at org.apache.sqoop.manager.SqlManager.listTables(SqlManager.java:520) 
 
\t at org.apache.sqoop.tool.ListTablesTool.run(ListTablesTool.java:49) 
 
\t at org.apache.sqoop.Sqoop.run(Sqoop.java:143) 
 
\t at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) 
 
\t at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179) 
 
\t at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218) 
 
\t at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227) 
 
\t at org.apache.sqoop.Sqoop.main(Sqoop.java:236) 
 
Caused by: org.apache.thrift.transport.TTransportException 
 
\t at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:132) 
 
\t at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) 
 
\t at org.apache.thrift.transport.TFramedTransport.readFrame(TFramedTransport.java:129) 
 
\t at org.apache.thrift.transport.TFramedTransport.read(TFramedTransport.java:101) 
 
\t at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) 
 
\t at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:378) 
 
\t at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:297) 
 
\t at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:204) 
 
\t at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:69) 
 
\t at org.apache.cassandra.thrift.Cassandra$Client.recv_describe_cluster_name(Cassandra.java:1247) 
 
\t at org.apache.cassandra.thrift.Cassandra$Client.describe_cluster_name(Cassandra.java:1235) 
 
\t at org.apache.cassandra.cql.jdbc.CassandraConnection.<init>(CassandraConnection.java:130) 
 
\t ... 13 more 
 
Could not retrieve tables list from server 
 
16/08/15 16:52:41 ERROR tool.ListTablesTool: manager.listTables() returned null
、私はこのコマンドを実行すると、私は次のエラーを取得する

bin/sqoop list-tables --driver org.apache.cassandra.cql.jdbc.CassandraDriver --connect jdbc:cassandra://127.0.0.1:7199/sample --username cassandra --password cassandra 

、それから私は、コマンドを実行した

apache-cassandra-2.2.7.jar 
apache-cassandra-thrift-2.2.7.jar 
cassandra-jdbc-1.2.5.jar 
cassandra-all-1.2.0.jar 
libthrift-0.8.0.jar 
thrift-server-0.3.7.jar 

、/ libに$ SQOOP_HOME /の下に、以下のライブラリファイルを保管しました

私はそれが何らかのスリフトeしかし、lib-thrift jarを他のいくつかのバージョンに置き換えたとしても修正できませんでした。

答えて

2

カッサンドラJDBCドライバはかなり古いです。私が最後に使ったのは、最新のcassandraライブラリから手作業でコンパイルし、コンパイルエラーを修正する必要があったからです。

DataStax Enterpriseには、Cassandraのカスタムsqoopドライバが含まれています。データの転送にはSparkジョブを使用するか、sqoopを使用する必要があります。

関連する問題