Solr若干注意事项

1、数据批量导入(DataImport)

判断数据重复的依据是schema.xml里的uniqueKey,即使多次重复导入,也不会产生重复的document:

<uniqueKey>c_id</uniqueKey>

2、更新schema

首先需要更新schema.xml和solrConfig.xml文件,比如增加一个field。注意在管理界面admin->core0->Overview里查看一下solr配置文件的位置(如Instance:/usr/share/solr/core0),要更新这个位置下的配置文件。

注意:需要重启solr才会生效,已经索引的document需要重新索引。

3、删除已经导入的数据

参考solr的wiki,在管理界面admin->core0->Documents里,用xml格式分别执行删除和确认命令:

<delete><query>*:*</query></delete>
<commit/>

4、导入大量数据

如果一次导入大量数据,有可能会导致内存不足而失败。解决的办法是分批导入,在管理界面里core0->Dataimport下指定Start,Rows即可。(特别是有sub-entity的情况)

注意1:不要勾选clean复选框,否则上次导入的数据将比清除。

注意2:Start,Rows不是Start,End

注意3:Start值很高的时候,即使rows不大,导入速度仍然会很慢。此时可以用debug模式修改query(例如加上where id> 1000000)。

5、在tomcat里指定solr.home

在server.xml里的<context>下指定<Enviroment>:

<Environment name="solr/home" type="java.lang.String" value="/usr/share/solr"/>

参考资料:

Solr FAQ

How to fix java RuntimeException: Can’t find resource ‘solrconfig.xml’?

Windows下使用hadoop

1、从apache下载hadoop,并解压缩,例如hadoop-2.7.3.tar.gz

2、在hadoop-env.cmd里修改设置JAVA_HOME和HADOOP_HOME

set JAVA_HOME="C:\Program Files\Java\jdk1.7.0_79"
set HADOOP_HOME="C:\install\hadoop-2.7.3"

注意如果JAVA_HOME有空格,要用双引号,否则提示JAVA_HOME incorrect set。

3、下载winutils

winutils包含winutils.exe和hadoop.dll,将这两个文件复制到hadoop/bin目录下,否则执行hadoop命令会提示如下错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsByteArray(II[BI[BIILjava/lang/St ring;JZ)V at org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsByteArray(Native Method) at org.apache.hadoop.util.NativeCrc32.calculateChunkedSumsByteArray(NativeCrc32.java:86) at org.apache.hadoop.util.DataChecksum.calculateChunkedSums(DataChecksum.java:430) at org.apache.hadoop.fs.FSOutputSummer.writeChecksumChunks(FSOutputSummer.java:202)

下载地址:https://github.com/steveloughran/winutils

注意与所使用的hadoop版本要匹配。参考链接

4、查看远程hdfs文件列表(根目录)

hadoop fs -ls hdfs://192.168.130.100/

其他文件操作类似,可以执行hadoop fs命令查看。

5、在Eclipse里调试mapreduce程序

在eclipse里直接运行mapreduce程序时可能会提示:

ERROR [main] util.Shell (Shell.java:getWinUtilsPath(303)) - Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
    at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:278)
    at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:300)
    at org.apache.hadoop.util.Shell.<clinit>(Shell.java:293)

原因是没有配置HADOOP_HOME环境变量,在run configuration里加上,或者在windows系统环境变量里加上这个环境变量即可。参考

 

 

MDX常见问题

1、给measure起别名

WITH MEMBER [Measure].[newName] AS [Measure].[originName]
SELECT  [Measure].[newName] ON COLUMNS, xxx ON ROWS
FROM [myCube]

可达到将originName改为newName的效果。

2、查询原始fact记录

使用DRILLTHROUGH查询。

待续

Docker代替虚拟机

目的:为docker container分配一个与宿主机同网段的静态IP,允许同网段用户ssh访问这个container。

步骤1:启动ubuntu镜像:

docker run -itd --name container1 --net=none ubuntu

步骤2:进入container做一些设置:

docker exec -ti container1 bash
apt-get update && apt-get install openssh-server -y
echo 'root:mypassword'|chpasswd
service ssh restart
vi /etc/ssh/sshd_config //将PermitRootLogin值改yes

步骤3:可以用docker commit将这些工作打成镜像,以后开新container就方便了:

docker stop container1
docker commit container1 ssh_image:1.0
docker start container1
docker exec -tid container1 service ssh start #开启ssh服务

步骤4:安装并使用pipework设置网络(直连宿主机所在子网):

wget https://github.com/jpetazzo/pipework/archive/master.zip
unzip master.zip
pipework eth0 container1 10.1.10.86/24@10.1.10.1

参考资料