如何解决Bigtable模拟器找不到合适的构造函数
最近,我正在尝试在IntelliJ IDEA工具上使用带有Java(Spring Boot)的Bigtable模拟器来开发一些东西。
我所做的:
-
“ cbt”可与在Mac上运行的Bigtable模拟器正常工作,例如this。
我已经检查了运行Bigtable模拟器不需要真正的gcloud凭据。
- 我在IEDA上编写了一个单元测试,例如this工作正常。 我在这样的设置中添加了环境变量:
I。连接初始化:
Configuration conf;
Connection connection = null;
conf = BigtableConfiguration.configure("fake-project","fake-instance");
String host = "localhost";
String port = "8086";
II。常量数据将要写入表中。
final byte[] TABLE_NAME = Bytes.toBytes("Hello-Bigtable");
final byte[] COLUMN_FAMILY_NAME = Bytes.toBytes("cf1");
final byte[] COLUMN_NAME = Bytes.toBytes("greeting");
final String[] GREETINGS = {
"Hello World!","Hello Cloud Bigtable!","Hello!!"
};
III。正在连接:(与I.Connect初始化重复。)
Configuration conf;
Connection connection = null;
conf = BigtableConfiguration.configure("fake-project","fake-instance");
String host = "localhost";
String port = "8086";
III。正在连接:(已编辑)
if(!Strings.isNullOrEmpty(host)){
conf.set(BigtableOptionsFactory.BIGTABLE_HOST_KEY,host);
conf.set(BigtableOptionsFactory.BIGTABLE_PORT_KEY,port);
conf.set(BigtableOptionsFactory.BIGTABLE_USE_PLAINTEXT_NEGOTIATION,"true");
}
connection = BigtableConfiguration.connect(conf);
IV。写入和读取数据:
Admin admin = connection.getAdmin();
Table table = connection.getTable(TableName.valueOf(TABLE_NAME));
if(!admin.tableExists(TableName.valueOf(TABLE_NAME))){
HTableDescriptor descriptor = new HTableDescriptor(TableName.valueOf(TABLE_NAME));
descriptor.addFamily(new HColumnDescriptor(COLUMN_FAMILY_NAME));
System.out.print("Create table " + descriptor.getNameAsString());
admin.createTable(descriptor);
}
for (int i = 0; i < GREETINGS.length; i++) {
String rowKey = "greeting" + i;
Put put = new Put(Bytes.toBytes(rowKey));
put.addColumn(COLUMN_FAMILY_NAME,COLUMN_NAME,Bytes.toBytes(GREETINGS[i]));
table.put(put);
}
Scan scan = new Scan();
ResultScanner scanner = table.getScanner(scan);
for (Result row : scanner) {
byte[] valueBytes = row.getValue(COLUMN_FAMILY_NAME,COLUMN_NAME);
System.out.println('\t' + Bytes.toString(valueBytes));
}
V。输出
Hello World!
Hello Cloud Bigtable!
Hello!!
在我将此代码添加到项目后出现了问题。 当我使用'debug'运行代码时。
我得到这样的东西 当它尝试连接bigtable时: 似乎无法基于我创建的配置创建新实例。
最终,它向我显示了一个错误
Could not find an appropriate constructor for com.google.cloud.bigtable.hbase1_x.BigtableConnection
P.S。我试图使用运行IntelliJ IDEA的命令。我这样做的原因是因为在使用单元测试时缺少环境变量。 在我的.zshrc中:
我的CMD工具是带有oh-myzsh的iTerm2。
任何事情都可以帮助!!!!
非常感谢。
解决方法
似乎您错过了BigtableConnection的构造函数:BigtableConnection(org.apache.hadoop.conf.Configuration conf)
我建议您按照Google Documentation
中所述的步骤尝试创建Connection
对象
private static Connection connection = null;
public static void connect() throws IOException {
Configuration config = BigtableConfiguration.configure(PROJECT_ID,INSTANCE_ID);
// Include the following line if you are using app profiles.
// If you do not include the following line,the connection uses the
// default app profile.
config.set(BigtableOptionsFactory.APP_PROFILE_ID_KEY,APP_PROFILE_ID);
connection = BigtableConfiguration.connect(config);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。