WRONGTYPE Operation against a key holding the wrong kind of value
根本的就是redis同一个key的value值前后类型不一致,比如最开始是client.set("key1", "val1"); 第二次client.hset("key1", ''field1", "val1" ); 第一次value是set类型下的String,第二次value是Hash下的map(field,value)。所以要保证key的唯一性,最好前面加个前缀。
Phoenix进行upsert数据后select找不到,明明已经affected却发现无效,原因一般是commit为提交。Java中一般是conn.commit(); phoenix@jdbc中一般是 !commit
Phoenix找不到表,但在确定表名正确的情况下,一般是TABLE.SCHEM未加,如MTDAP.STAT_NIGHT_VEH,如果只是STAT_NIGHT_VEH是找不到表的
常用Shell命令:
1、!table 显示所有表名
2、create table IF NOT EXISTS test.Person (IDCardNum INTEGER not null primary key, Name varchar(20),Age INTEGER); 创建表
3、upsert into test.Person (IDCardNum,Name,Age) values (100,'小明',12); 插入或修改数据
4、delete from test.Person where idcardnum=100; 删除数据
5、drop table test.person; 删除表
查看表结构信息
desc table_name; --Hive
!describe HIDE_VEH_IDX --Phoenix (一般来说Phoenix下找表都要加上 TABLE_SCHEM,如 "UPSERT INTO MTDAP.NIGHT_VEH values (?,?,?)" 但查看表结构时不合适,好像会把其他属性展示,字段却看不清)
Java 天数加减需要转换成Calendar
* Phoenix提高插入数据的性能,第一在于commit的数量,比如每10000条数据插一次,最后在提交一次。如果提交次数过多,速度很慢,过少可能会失败,比如30万提交一次,并且也不利于健壮性。
scala,gradle报错:'jvm-1.8' is not a valid choice for '-target'
Scala版本问题,一次性的做法可以将scala_compiler.xml中的parameter“jvm-1.8”删除;
治本的是更换scala的版本或者将jdk1.8换成1.7;
解决scalac Error: bad option -make:transitive
修改scala_compiler.xml文件
删除掉参数行包含-make:transitive
Solr的复合查询
Solr目前不能简单的支持这种查询,如果想要满足这种查询统计,需要在schema的设计上,将一个字段设置为多值,然后通过多个值进行分组统计。如果应用中查询统计分析的模式比较固定,预先知道哪些字段会用于联合分组统计,完全可以在设计的时候,考虑设置多值字段来满足这种需求。