Winse Blog

走走停停, 熙熙攘攘, 忙忙碌碌, 不知何畏.

Set

1
2
3
4
5
6
7
8
9
10
Set<BlockedInfo> diffs = new HashSet<>();
diffs.addAll(oldBlockedList);
diffs.addAll(newBlockedList);
Iterator<BlockedInfo> iterator = diffs.iterator();
while (iterator.hasNext()) {
  BlockedInfo i = iterator.next();
  if (oldBlockedList.contains(i) && newBlockedList.contains(i)) {
      iterator.remove();
  }
}

第二段代码希望找出前后两个list的差别,即XOR的效果。但是。。。为什么呢?想一想。

用guava库一行代码搞定:

1
Sets.difference(Sets.union(oldBlockedList, newBlockedList), Sets.intersection(oldBlockedList, newBlockedList))

hive建表

由于fs.defaultFS和hive.metastore.warehouse.dir对不上,建表后不能删除。

1
2
3
4
5
6
7
8
<property>
        <name>fs.defaultFS</name>
        <value>hdfs://zfcluster</value>
</property>
<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>hdfs://zfcluster:8020/hive/warehousedir</value>
</property>

删除表报错:

1
2
hive> drop table es_t_house_monitor2;
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:java.lang.IllegalArgumentException: Wrong FS: hdfs://zfcluster:8020/hive/warehousedir/es_t_house_monitor2, expected: hdfs://zfcluster)

建错了,只能先改!然后把hive.metastore.warehouse.dir和fs.defaultFS调成一致。

修改hive持久化(数据库)的表sds,找到location是该路径的改掉。然后就可以drop表了。

nginx rewrite中大括号

由于大括号用于一段规则的结束开始,所以直接在rewrite写 {} 是报错的。需要把包括{}大括号的规则用双引号括起来。

注: 对花括号( { 和 } )来说, 他们既能用在重定向的正则表达式里,也是用在配置文件里分割代码块, 为了避免冲突, 正则表达式里带花括号的话,应该用双引号(或者单引号)包围。

–END

Comments