【大数据开发运维解决方案】Linux Solr5.1安装及导入Oracle数据库表数据

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 在solr页面中点击core admin–>add core 增加一个core。和id字段如果不做主键,需要将required="true"去掉。配置文件介绍中已经说了问题的主要原因是schema配置文件中存在。2、取消ID的required=true,修改为指定的字段即可。保存退出,至于为什么这么改,看后面遇到的问题及解决方法。1、将uniqueKey修改为你导入solr的字段。能够正常查询出来数据,简单导入完成。最后结果如上截图及配置。

一、Solr5.1安装

1、官方下载链接

点此下载

2、下载上传压缩包到Linux服务器

[root@hadoop ~]# mkdir -p /hadoop/solr

通过sftp上传压缩包至此目录:

[root@hadoop solr]# ls
 solr-5.1.0.tgz
[root@hadoop solr]# tar -zxvf  solr-5.1.0.tgz
......
[root@hadoop solr]# mv  solr-5.1.0/* .
[root@hadoop solr]# ls
bin  CHANGES.txt  contrib  dist  docs  example  licenses  LICENSE.txt  LUCENE_CHANGES.txt  NOTICE.txt  README.txt  server  solr-5.1.0.tgz

3、接下来创建第一个core

[root@hadoop ~]# cd /hadoop/solr/server/
[root@hadoop server]# ls
contexts  etc  lib  logs  README.txt  resources  scripts  solr  solr-webapp  start.ini  start.jar  webapps
[root@hadoop server]# cd solr
[root@hadoop solr]# mkdir core_one
[root@hadoop solr]# ls
configsets  core_one  README.txt  solr.xml  zoo.cfg
复制一份官方基础配置到core_one下:
[root@hadoop core_one]# cp -r /hadoop/solr/server/solr/configsets/sample_techproducts_configs/conf /hadoop/solr/server/solr/core_one/

4、启动solr

[root@hadoop ~]# cd /hadoop/solr/
[root@hadoop solr]# ./bin/solr start -p 8983

启动后直接访问页面:
http://192.168.1.66:8983/solr/#/
--ip根据自己改
在solr页面中点击core admin-->add core 增加一个core
image.png
增加完毕,就有一个新的core了:
image.png

二、导入Oracle数据

0、要导入的Oracle库表结构:

image.png

1、在core_one目录下新建一个lib文件夹用于存放需要的相关jar包:

[root@hadoop solr]# cd /hadoop/solr/server/solr/core_one/
[root@hadoop core_one]# mkdir lib

将solr-dataimporthandler*包从dist目录复制过来:

[root@hadoop core_one]# cd /hadoop/solr/dist/
[root@hadoop dist]# cp solr-dataimporthandler-* /hadoop/solr/server/solr/core_one/lib/

2将Oracle驱动包从Oracle数据库所在服务器复制过来:

[oracle@source ~]$ cd $ORACLE_HOME
[oracle@source db_1]$ cd jdbc/
[oracle@source jdbc]$ ls
lib  Readme.txt
[oracle@source jdbc]$ cd lib/
[oracle@source lib]$ scp ojdbc6.jar root@192.168.1.66:/hadoop/solr/server/solr/core_one/lib/
root@192.168.1.66's password: 
ojdbc6.jar                                                            100% 2675KB   2.6MB/s   00:00

3、从/hadoop/solr/example/example-DIH/solr/solr/conf复制一份solr-data-config文件到core-one/conf下:

[root@hadoop dist]#  cp /hadoop/solr/example/example-DIH/solr/solr/conf/solr-data-config.xml /hadoop/solr/server/solr/core_one/conf/

4、开始编辑配置文件

先编辑solrconfig.xml文件:

[root@hadoop conf]# cd /hadoop/solr/server/solr/core_one/
[root@hadoop core_one]# vim conf/solrconfig.xml
添加如下代码:
<requestHandler name="/dataimport" class="solr.DataImportHandler">
      <lst name="defaults">
            <str name="config">solr-data-config.xml</str>
      </lst>
</requestHandler>

因为我们要导入oracle库,所以还要在配置文件中添加jar包路径:

 <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
  <lib dir="./lib/" regex="ojdbc6.jar" />

保存退出,接下来修改solr-data-config.xml文件:

[root@hadoop core_one]# vim conf/solr-data-config.xml
覆盖添加内容如下:
<dataConfig>
    <dataSource type="JdbcDataSource" driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@//192.168.1.6:1521/orcl" user="scott" password="tiger"/>
    <document name="Info" pk="empno">
        <entity name="zpxx" transformer="ClobTransformer" pk="empno" query="SELECT empno, ename from emp">
            <field column="empno" name="empno" />
            <field column="ename" name="ename" />
        </entity>
    </document>
</dataConfig>

保存退出,接下来修改schema.xml文件:

首先将id字段的配置改成下面:
 <field name="id" type="string" indexed="true" stored="true" multiValued="false" />
 其次加入我们需要查询的两个字段:
   <field name="ename" type="string" indexed="true" stored="true" />
   <field name="empno" type="string" indexed="true" stored="true" required="true" multiValued="false" />
然后将
 <uniqueKey>id</uniqueKey>
 改成
  <uniqueKey>empno</uniqueKey>

保存退出,至于为什么这么改,看后面遇到的问题及解决方法。

5、重启solr

cd /hadoop/solr
./bin/solr stop
./bin/solr start -p 8983

6、导入数据

进入solr的管理页面:
image.png
entity部分有我们设置的zpxx了,现在执行execute:
image.png
执行成功后右上角会显示执行的结果,导入完成,现在做查询测试:
image.png
能够正常查询出来数据,简单导入完成。

三、过程中遇到的问题

一开始导入的时候一直hang在那不动,后来通过查看logging页面报错:

org.apache.solr.common.SolrException: Document is missing mandatory uniqueKey field: id
    at org.springframework.data.solr.core.SolrTemplate.execute(SolrTemplate.java:145)
    at org.springframework.data.solr.core.SolrTemplate.saveBean(SolrTemplate.java:184)
    at org.springframework.data.solr.core.SolrTemplate.saveBean(SolrTemplate.java:178)
    at com.hbsi.TestSolrTemplate.testAddList(TestSolrTemplate.java:79)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    。。。。。。

于是翻了下schema.xml的配置文档:

image.png
image.png
配置文件介绍中已经说了问题的主要原因是schema配置文件中存在

  <uniqueKey>id</uniqueKey>

和id字段如果不做主键,需要将required="true"去掉。
所以修改方式为:
1、将uniqueKey修改为你导入solr的字段
2、取消ID的required=true,修改为指定的字段即可
最后结果如上截图及配置。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
相关文章
|
1月前
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之如何开发ODPS Spark任务
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
22天前
|
运维 Devops 持续交付
自动化运维之路:从脚本到DevOps探索后端开发:从基础到高级实践
【8月更文挑战第28天】在数字化时代的浪潮中,企业对于IT运维的要求越来越高。从最初的手动执行脚本,到如今的自动化运维和DevOps实践,本文将带你领略运维的演变之旅。我们将探索如何通过编写简单的自动化脚本来提升效率,进而介绍DevOps文化的兴起及其对现代运维的影响。文章将为你揭示,通过持续集成、持续部署和微服务架构的实践,如何构建一个高效、可靠的运维体系。准备好让你的运维工作变得更加智能化和自动化了吗?让我们一起踏上这段旅程。 【8月更文挑战第28天】 本文旨在为初学者和有一定经验的开发者提供一个深入浅出的后端开发之旅。我们将一起探索后端开发的多个方面,包括语言选择、框架应用、数据库设计
|
24天前
|
缓存 运维 Linux
深入解析:一步步掌握 CentOS 7 安装全流程及运维实战技巧
深入解析:一步步掌握 CentOS 7 安装全流程及运维实战技巧
|
11天前
|
SQL 分布式计算 大数据
代码编码原则和规范大数据开发
此文档详细规定了SQL代码的编写规范,包括代码的清晰度,执行效率,以及注释的必要性。它强调所有SQL关键字需统一使用大写或小写,并禁止使用select *操作。此外,还规定了代码头部的信息模板,字段排列方式,INSERT, SELECT子句的格式,运算符的使用,CASE语句编写规则,查询嵌套规范,表别名定义,以及SQL注释的添加方法。这些规则有助于提升代码的可读性和可维护性。
11 0
|
11天前
|
SQL 分布式计算 大数据
大数据开发SQL代码编码原则和规范
这段SQL编码原则强调代码的功能完整性、清晰度、执行效率及可读性,通过统一关键词大小写、缩进量以及禁止使用模糊操作如select *等手段提升代码质量。此外,SQL编码规范还详细规定了代码头部信息、字段与子句排列、运算符前后间隔、CASE语句编写、查询嵌套、表别名定义以及SQL注释的具体要求,确保代码的一致性和维护性。
15 0
|
1月前
|
运维 Kubernetes 监控
|
1月前
|
敏捷开发 运维 Devops
DevOps文化:打破开发与运维之间的壁垒
【8月更文挑战第14天】DevOps文化是现代软件开发和运维的重要趋势之一。通过打破开发与运维之间的壁垒,实现自动化、持续集成/持续部署以及紧密协作等关键实践,可以显著提高软件交付的质量和效率。对于任何希望在数字化时代保持竞争力的企业来说,拥抱DevOps文化无疑是一个明智的选择。
|
1月前
|
应用服务中间件 网络安全 nginx
运维专题.Docker+Nginx服务器的SSL证书安装
运维专题.Docker+Nginx服务器的SSL证书安装
43 3
|
1月前
|
数据可视化
Echarts数据可视化开发| 智慧数据平台
Echarts数据可视化开发| 智慧数据平台
|
1月前
|
数据可视化
Echarts数据可视化大屏开发| 大数据分析平台
Echarts数据可视化大屏开发| 大数据分析平台