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

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*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;
相关文章
|
30天前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
153 64
|
20天前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
26 7
|
20天前
|
Oracle 关系型数据库 数据库
oracle数据库技巧
【10月更文挑战第25天】oracle数据库技巧
22 6
|
23天前
|
机器学习/深度学习 人工智能 运维
智能运维:大数据与AI的融合之道###
【10月更文挑战第20天】 运维领域正经历一场静悄悄的变革,大数据与人工智能的深度融合正重塑着传统的运维模式。本文探讨了智能运维如何借助大数据分析和机器学习算法,实现从被动响应到主动预防的转变,提升系统稳定性和效率的同时,降低了运维成本。通过实例解析,揭示智能运维在现代IT架构中的核心价值,为读者提供一份关于未来运维趋势的深刻洞察。 ###
76 10
|
20天前
|
存储 Oracle 关系型数据库
Oracle数据库优化策略
【10月更文挑战第25天】Oracle数据库优化策略
18 5
|
27天前
|
存储 Oracle 关系型数据库
数据库数据恢复—Oracle ASM磁盘组故障数据恢复案例
Oracle数据库数据恢复环境&故障: Oracle ASM磁盘组由4块磁盘组成。Oracle ASM磁盘组掉线 ,ASM实例不能mount。 Oracle数据库故障分析&恢复方案: 数据库数据恢复工程师对组成ASM磁盘组的磁盘进行分析。对ASM元数据进行分析发现ASM存储元数据损坏,导致磁盘组无法挂载。
|
29天前
|
监控 Oracle 关系型数据库
Oracle数据库性能优化
【10月更文挑战第16天】Oracle数据库性能优化是
26 1
|
2月前
|
Oracle 关系型数据库 数据库
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
打开oracle数据库报错“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。 数据库没有备份,无法通过备份去恢复数据库。用户方联系北亚企安数据恢复中心并提供Oracle_Home目录中的所有文件,急需恢复zxfg用户下的数据。 出现“system01.dbf需要更多的恢复来保持一致性”这个报错的原因可能是控制文件损坏、数据文件损坏,数据文件与控制文件的SCN不一致等。数据库恢复工程师对数据库文件进一步检测、分析后,发现sysaux01.dbf文件损坏,有坏块。 修复并启动数据库后仍然有许多查询报错,export和data pump工具使用报错。从数据库层面无法修复数据库。
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
|
1月前
|
SQL 存储 Oracle
Oracle数据库SQL语句详解与应用指南
在数字化时代,数据库已成为各类企业和组织不可或缺的核心组件。Oracle数据库作为业界领先的数据库管理系统之一,广泛应用于各种业务场景。掌握Oracle数据库的SQL语句是数据库管理员、开发人员及运维人员的基本技能。本文将详细介绍Oracle数据库SQL语句的基本概念、语法、应用及最佳实践。一、Or
55 3
|
2月前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—异常断电导致Oracle数据库数据丢失的数据恢复案例
Oracle数据库故障: 机房异常断电后,Oracle数据库启库报错:“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。数据库没有备份,归档日志不连续。用户方提供了Oracle数据库的在线文件,需要恢复zxfg用户的数据。 Oracle数据库恢复方案: 检测数据库故障;尝试挂起并修复数据库;解析数据文件。