`

使用hector操作Cassandra

    博客分类:
  • J2EE
 
阅读更多

 

http://rantav.github.com/hector/build/html/content/getting_started.html

https://github.com/zznate/hector-examples.git

 

 


private static final String DYN_KEYSPACE = "logdb";
	private static final String DYN_CF = "user";

	private static StringSerializer stringSerializer = StringSerializer.get();
	private static LongSerializer longSerializer = LongSerializer.get();
	private static Cluster cluster = HFactory.getOrCreateCluster(
			"Test Cluster", "localhost:9160");

	public static void createSchema() {

		try {
			if (cluster.describeKeyspace(DYN_KEYSPACE) != null) {
				cluster.dropKeyspace(DYN_KEYSPACE);
			}

			// 字段操作
			BasicColumnDefinition ageColumnDefinition = new BasicColumnDefinition();
			ageColumnDefinition.setName(stringSerializer.toByteBuffer("age"));
			ageColumnDefinition.setIndexName("age_idx");
			ageColumnDefinition.setIndexType(ColumnIndexType.KEYS);
			ageColumnDefinition.setValidationClass(ComparatorType.LONGTYPE
					.getClassName());

			// 字段操作
			BasicColumnDefinition usernameColumnDefinition1 = new BasicColumnDefinition();
			usernameColumnDefinition1.setName(stringSerializer
					.toByteBuffer("username"));
			usernameColumnDefinition1.setIndexName("username_idx");
			usernameColumnDefinition1.setIndexType(ColumnIndexType.KEYS);
			usernameColumnDefinition1
					.setValidationClass(ComparatorType.UTF8TYPE.getClassName());

			BasicColumnFamilyDefinition columnFamilyDefinition = new BasicColumnFamilyDefinition();
			columnFamilyDefinition.setKeyspaceName(DYN_KEYSPACE);
			columnFamilyDefinition.setName(DYN_CF);
			columnFamilyDefinition.addColumnDefinition(ageColumnDefinition);
			columnFamilyDefinition
					.addColumnDefinition(usernameColumnDefinition1);

			ColumnFamilyDefinition cfUser = new ThriftCfDef(
					columnFamilyDefinition);

			KeyspaceDefinition keyspaceDefinition = HFactory
					.createKeyspaceDefinition(DYN_KEYSPACE,
							"org.apache.cassandra.locator.SimpleStrategy", 1,
							Arrays.asList(cfUser));

			cluster.addKeyspace(keyspaceDefinition);

			// insert some data

			for (int i = 0; i < 1; i++) {
				List<KeyspaceDefinition> keyspaces = cluster
						.describeKeyspaces();
				for (KeyspaceDefinition kd : keyspaces) {
					if (kd.getName().equals(DYN_KEYSPACE)) {
						System.out.println("Name: " + kd.getName());
						System.out.println("RF: " + kd.getReplicationFactor());
						System.out.println("strategy class: "
								+ kd.getStrategyClass());
						List<ColumnFamilyDefinition> cfDefs = kd.getCfDefs();
						for (ColumnFamilyDefinition def : cfDefs) {
							System.out.println("  CF Type: "
									+ def.getColumnType());
							System.out.println("  CF Name: " + def.getName());
							System.out.println("  CF Metadata: "
									+ def.getColumnMetadata());

						}

					}
				}
			}

		} catch (HectorException he) {
			he.printStackTrace();
		}
		cluster.getConnectionManager().shutdown();
	}

	public static void operatioinDB() {
		String value = "";
		for (int i = 0; i < 10; i++) {
			value = value + "x";
		}

		Keyspace keyspaceOperator = HFactory.createKeyspace("logdb", cluster);

		try {
			Mutator<String> userMutator = HFactory.createMutator(
					keyspaceOperator, stringSerializer);

			Long age = 1000L;
			long start = System.currentTimeMillis();
			for (long i = 0; i < 10000 * 10000; i++) {
				userMutator.addInsertion("" + i, "user",
						HFactory.createStringColumn("username", "小贩" + i))
						.addInsertion(
								"" + i,
								"user",
								HFactory.createColumn("age", i,
										stringSerializer, longSerializer));
				if (i % 500 == 0) {
					System.out.println(i);
					userMutator.execute();
				}

			}
			userMutator.execute();
			System.out.println("消耗毫秒:" + (System.currentTimeMillis() - start));

		} catch (HectorException e) {
			e.printStackTrace();
		}
		cluster.getConnectionManager().shutdown();
	}

	public static void query() {
		Keyspace keyspaceOperator = HFactory.createKeyspace("logdb", cluster);
		long value = RandomUtils.nextInt(10000 * 1);
		ColumnFamilyTemplate<String, String> columnFamilyTemplate = new ThriftColumnFamilyTemplate<String, String>(
				keyspaceOperator, "user", stringSerializer, stringSerializer);
		IndexedSlicesPredicate<String, String, Long> agePredicate = new IndexedSlicesPredicate<String, String, Long>(
				stringSerializer, stringSerializer, longSerializer);
		IndexedSlicesPredicate<String, String, String> usernamePredicate = new IndexedSlicesPredicate<String, String, String>(
				stringSerializer, stringSerializer, stringSerializer);
		usernamePredicate.addExpression("username", IndexOperator.EQ,
				"小贩" + value).startKey("");
		agePredicate.addExpression("age", IndexOperator.EQ, value).startKey("");
		ColumnFamilyResult<String, String> list = columnFamilyTemplate
				.queryColumns(usernamePredicate);
		System.out.println(list.getString("username"));
		list = columnFamilyTemplate.queryColumns(agePredicate);
		System.out.println(list.getLong("age"));
		// ======================================================================================

	}

	public static void query2() {
		Keyspace keyspaceOperator = HFactory.createKeyspace("logdb", cluster);
		long value = RandomUtils.nextInt(10000 * 1);
		IndexedSlicesQuery<String, String, String> indexedSlicesQuery = HFactory
				.createIndexedSlicesQuery(keyspaceOperator, stringSerializer,
						stringSerializer, stringSerializer);
		indexedSlicesQuery.addEqualsExpression("username", "小贩" + value);
		indexedSlicesQuery.setColumnFamily("user");
		indexedSlicesQuery.setStartKey("");

		indexedSlicesQuery.setColumnNames("username", "age");
		QueryResult<OrderedRows<String, String, String>> result = indexedSlicesQuery
				.execute();
		System.out.println(result.get());

	}

	public static void main(String[] args) throws Exception {
		query2();
	}
 
分享到:
评论
1 楼 di1984HIT 2014-05-30  
谢谢,写的不错。

相关推荐

Global site tag (gtag.js) - Google Analytics