gpt4 book ai didi

cassandra - 将 Cassandra 表复制到 Hive

转载 作者:行者123 更新时间:2023-12-02 14:26:05 25 4
gpt4 key购买 nike

我已经被这个问题困扰好几天了。因此,任何帮助将不胜感激。

我正在尝试将 cassandra 表复制到 hive(以便我可以将其放入 hive 元存储中,然后从 Tableau 访问它)。 Hive -> Tableau 部分有效,但 Cassandra 到 Hive 部分无效。数据未复制到 Hive 元存储。

以下是我已采取的步骤:

我按照该项目自述文件中的说明进行操作:https://github.com/tuplejump/cash/tree/master/cassandra-handler

我生成了 hive-cassandra-..jar,将其和 cassandra-all-.jar、cassandra-thrift-*.jar 复制到 hive lib 文件夹。

然后我启动了配置单元并尝试了以下操作:

hive> add jar /usr/lib/hive/apache-hive-1.1.0/lib/hive-cassandra-1.2.6.jar;
Added [/usr/lib/hive/apache-hive-1.1.0/lib/hive-cassandra-1.2.6.jar] to class path
Added resources: [/usr/lib/hive/apache-hive-1.1.0/lib/hive-cassandra-1.2.6.jar]
hive> list jars;
/usr/lib/hive/apache-hive-1.1.0/lib/hive-cassandra-1.2.6.jar
hive> create temporary function tmp as 'org.apache.hadoop.hive.cassandra.cql3.CqlStorageHandler'
> ;
FAILED: Class org.apache.hadoop.hive.cassandra.cql3.CqlStorageHandler not found

我不知道为什么hive看不到CqlStorageHandler...

谢谢!

最佳答案

您可以考虑的另一种选择是编写一个简单的 java 程序,将数据写入文件,然后将其加载到 hive。

package com.company.cassandra;

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Cluster.Builder;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.ResultSetFuture;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;

public class CassandraExport {

public static Session session;


public static void connect(String username, String password, String host, int port, String keyspace) {
Builder builder = Cluster.builder().addContactPoint(host);
builder.withPort(port);
if (username != null && password != null) {
builder.withCredentials(username, password);
}

Cluster cluster = builder.build();
session = cluster.connect(keyspace);
}

public static void main(String[] args) {
//Prod
connect("user", "password", "server", 9042, "keyspace");

ResultSetFuture future = session.executeAsync("SELECT * FROM table;");
ResultSet results = future.getUninterruptibly();
for (Row row : results) {
//Print the columns in the following order
String out = row.getString("col1") + "\t" +
String.valueOf(row.getInt("col2")) + "\t" +
String.valueOf(row.getLong("col3")) + "\t" +
String.valueOf(row.getLong("col4"));
System.out.println(out);
}

session.close();
session.getCluster().close();
}


}

将输出写入文件,然后加载到配置单元。

hive -e "use schema; load data local inpath '/tmp/cassandra-table' overwrite into table mytable;"

关于cassandra - 将 Cassandra 表复制到 Hive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29435848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com