海量交通大数据应用平台MTDAP_nchang的经验记录

时间:2021-01-23 03:21:04

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万提交一次,并且也不利于健壮性。

第二在于用PreparedStatement替换Statement。因为Statement每次执行SQL时都要解析一遍SQL,而PreparedStatement预先解析完该SQL,以后每插入一条只是传入变量而已,总共只解析一次SQL
 
多看国外官网!样例什么的都有。
 
Phoenix下shell命令是字符串用单引号,用双引号报错的:Undefined column. columnName。 真是细节决定成败啊!逻辑呢!
 
 

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的设计上,将一个字段设置为多值,然后通过多个值进行分组统计。如果应用中查询统计分析的模式比较固定,预先知道哪些字段会用于联合分组统计,完全可以在设计的时候,考虑设置多值字段来满足这种需求。

配置文件读取位置-System.getProperty("user.dir")

海量交通大数据应用平台MTDAP_nchang的经验记录