-
Notifications
You must be signed in to change notification settings - Fork 6.8k
Closed
Labels
Description
Hi,guys,There is Not compiled with HDFS support when I use ROCKsdbjni HdfsEnv. How can I fix it? Thank you
Expected behavior
- pom.xm
<dependencies>
<!-- https://mvnrepository.com/artifact/org.rocksdb/rocksdbjni -->
<!-- https://mvnrepository.com/artifact/org.rocksdb/rocksdbjni -->
<dependency>
<groupId>org.rocksdb</groupId>
<artifactId>rocksdbjni</artifactId>
<version>6.22.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.0.0</version>
</dependency>
</dependencies>- code
public static final String HDFS_SST_PATH = "hdfs://hadoop:8082/rocksdb";
public static final String HDFS_DATA_PATH = "/rocksdb/data";
public static final String HDFS_LOG_PATH = "/rocksdb/log";
public static final String HDFS_WAL_PATH = "/rocksdb/wal";
public static void main(String[] args) throws RocksDBException {
DBOptions dbOptions = new DBOptions();
dbOptions.setWalDir(HDFS_WAL_PATH);
dbOptions.setDbLogDir(HDFS_LOG_PATH);
dbOptions.setCreateMissingColumnFamilies(true);
dbOptions.setCreateIfMissing(true);
dbOptions.setAllowConcurrentMemtableWrite(true);
dbOptions.setSstFileManager(new SstFileManager(new HdfsEnv(HDFS_SST_PATH)));
dbOptions.setEnv(new HdfsEnv("hdfs://hadoop:8082/"));
List<ColumnFamilyDescriptor> columnFamilyDescriptors = Lists.newArrayList();
columnFamilyDescriptors.add(new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY));
ColumnFamilyOptions columnFamilyOptions = new ColumnFamilyOptions();
columnFamilyOptions.setLevelCompactionDynamicLevelBytes(true);
BlockBasedTableConfig blockBasedTableConfig = new BlockBasedTableConfig();
blockBasedTableConfig.setFilterPolicy(new BloomFilter());
blockBasedTableConfig.setBlockCache(new LRUCache(2000));
blockBasedTableConfig.setEnableIndexCompression(true);
columnFamilyOptions.setTableFormatConfig(blockBasedTableConfig);
columnFamilyOptions.setCompactionThreadLimiter(new ConcurrentTaskLimiterImpl("compaction-thread", 4));
columnFamilyDescriptors.add(new ColumnFamilyDescriptor("user".getBytes(), columnFamilyOptions));
List<ColumnFamilyHandle> columnFamilyHandles = Lists.newArrayList();
RocksDB db = RocksDB.open(dbOptions, HDFS_DATA_PATH, columnFamilyDescriptors, columnFamilyHandles);
ColumnFamilyHandle userCf = columnFamilyHandles.get(1);
/**
* create
*/
// put
db.put(userCf, "name".getBytes(), "huangsm".getBytes());
for (ColumnFamilyHandle columnFamilyHandle : columnFamilyHandles) {
columnFamilyHandle.getDescriptor().getOptions().close();
}
dbOptions.close();
db.close();
}- error log
Exception in thread "main" org.rocksdb.RocksDBException: Not compiled with hdfs support
at org.rocksdb.HdfsEnv.createHdfsEnv(Native Method)
at org.rocksdb.HdfsEnv.<init>(HdfsEnv.java:22)
at org.rocksdb.baseoperator.curd.RocksDBBestPractice.main(RocksDBBestPractice.java:43)Actual behavior
I think open DB should be a success
Steps to reproduce the behavior
Reactions are currently unavailable