环境:CentOS 6.3, gcc 4.4.7 g++4.4.7
wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo
yum install devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c++
scl enable devtoolset-2 bash
量化自我和极简主义的窝藏点
技术
环境:CentOS 6.3, gcc 4.4.7 g++4.4.7
wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo
yum install devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c++
scl enable devtoolset-2 bash
环境:Ubuntu 14.04
一直在关注DMLC 这个机器学习项目,最新的一个子项目是虫洞,提供可靠的和可扩展的机器学习工具在不平的计算平台(MPI, Yarn, Sungrid)。将大幅降低安装和部署分布式机器学习应用的门槛。对所有组件提供一致的数据流支持。还提供统一脚本来编译和运行所有组件。使得用户既可以在方便的本地集群运行深盟的任何一个分布式组件。
编译安装如下:
git clone https://github.com/dmlc/wormhole.git
cd wormhole
cp make/config.mk .
vi config.mk
注释HDFS, S3
#USE_HDFS = 1
#USE_S3 = 1
然后编译即可
make
生成两个执行文件:
kmeans.dmlc xgboost.dmlc
问题: 表SUMM_ADV_CONSUME是分区表,发出一个查询如下
select count(*) from dates T434858, SUMM_ADV_CONSUME T434932 where “T434858.DATE_ID” = T434932.DATE_ID and T434858.DATE_NAME = ‘20131202’
产生的执行计划扫描很多分区表,正常情况是一个分区表。使用同样的逻辑查询,用另个筛选条件date_name2
select count(*) from dates T434858, SUMM_ADV_CONSUME T434932 where “T434858.DATE_ID” = T434932.DATE_ID and T434858.DATE_NAME2 = to_date(‘20131105’, ‘yyyymmdd’)
只扫描一个分区表,执行计划正确。 分析两个字段发现date_name2上有建唯一索引。 对date_name创建唯一索引也能得出正确的执行计划。
在数据仓库etl过程会有许多不同的数据源从dw导数据, 以mysql数据源为例分几种方法来导入:
1. 借助etl工具本身来导入
优点: 开发效率高,直接表映射
缺点:etl工具本身license, 加载数据的效率低
2. 借助oracle gateway拉取mysql内的数据
优点:开发效率高,只需配置
缺点:如果数据量比较多的话拉取有瓶颈,不会使用谓语下推操作
3. 借助NFS将mysql数据导入,然后通过sqlldr加载NFS上的数据文件
优点:加载数据快, 直接使用原生态的导出和加载
缺点:配置麻烦
环境: Oracle 11gR2 RAC, CentOS 5.6
通过SCAN访问RAC database, 不时出现ORA-12543: TNS:destination host unreachable,经查只有一个scan listener可以访问。
[oracle@rac7 ~]$ srvctl config scan
SCAN name: rac-scan, Network: 1/192.168.56.0/255.255.255.0/eth0
SCAN VIP name: scan1, IP: /192.168.56.10/192.168.56.10
然而
[root@rac7 ~]# vi /var/named/localdomain.zone
$TTL 86400
@ IN SOA localhost root.localhost (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS localhost
localhost IN A 127.0.0.1
rac5 IN A 192.168.56.248
rac7 IN A 192.168.56.247
rac5-priv IN A 192.168.56.5
rac7-priv IN A 192.168.56.7
rac5-vip IN A 192.168.56.105
rac7-vip IN A 192.168.56.107
rac-scan IN A 192.168.56.10
rac-scan IN A 192.168.56.11
rac-scan IN A 192.168.56.12
有三个scan ip地址
更改操作如下:
srvctl stop scan_listener
srvctl stop scan
切换到root用户
/u01/app/grid/bin/srvctl modify scan -n rac-scan
/u01/app/grid/bin/srvctl config scan
/u01/app/grid/bin/srvctl modify scan_listener -u
/u01/app/grid/bin/srvctl config scan_listener
/u01/app/grid/bin/srvctl srvctl start scan_listener
再切换到oracle用户
srvctl status scan
srvctl status scan_listener
测试 sqlplus system/oracle@RAC-SCAN:1521/racdb.localdomain
然后多次查看select instance_name from v$instance;
可知instance_name会变化。
环境:oracle 11g, Windows XP
在进行select to_date(‘2011-May-20’, ‘yyyy-mon-dd’) from dual查询时,系统提示not a valid month。由于系统是中文环境,因而在需要在命令环境中输入 alter session set nls_date_language = ‘American’用于改变会话的日期格式。