【问题标题】:Cassandra and Solr integration: Unable to execute queryCassandra 和 Solr 集成:无法执行查询
【发布时间】:2017-11-30 05:12:44
【问题描述】:

我正在尝试集成 cassandra 和 solr。 我正在使用 solr -6.6.0 版本、cassandra 3.10 版本和 java 8。

我在我的 solrconfig.xml 中添加了这些行

<lib dir="/home/bkoganti/solr-6.6.0/contrib/dataimporthandler/" regex="cassandra-jdbc-.*\.jar"/>
<lib dir="/home/bkoganti/solr-6.6.0/contrib/dataimporthandler/" regex="cassandra-all-.*\.jar"/>
<lib dir="/home/bkoganti/solr-6.6.0/contrib/dataimporthandler/" regex="cassandra-thrift-.*\.jar"/>
<lib dir="/home/bkoganti/solr-6.6.0/contrib/dataimporthandler/" regex="libthrift-.*\.jar"/>
<lib dir="/home/bkoganti/solr-6.6.0/contrib/dataimporthandler/" regex="cassandra-driver-core-*\.jar"/>
.
.
.
.
<requestHandler name="/dataimport" class="solr.DataImportHandler">
    <lst name="defaults">
      <str name="config">sample-data-config.xml</str>
    </lst>
</requestHandler>`

sample-data-config.xml

<dataConfig>
        <dataSource type="JdbcDataSource" driver="org.apache.cassandra.cql.jdbc.CassandraDriver" url="jdbc:cassandra://127.0.0.1:9160/demo" autoCommit="true"/>
        <document name="content">
                <entity name="test" query="SELECT id,org,name,dep,place,sal from tutor" autoCommit="true">
                        <field column="id" name="id" />
                        <field column="org" name="org" />
                        <field column="name" name="name" />
                        <field column="dep" name="dep" />
                        <field column="place" name="place" />
                        <field column="sal" name="sal" />
                </entity>
        </document>
</dataConfig>

我在托管架构中添加了这些

<field name="org" type="string" indexed="true" stored="true" required="true" />
<field name="dep" type="string" indexed="true" stored="true" required="true" />
<field name="place" type="string" indexed="true" stored="true" required="true" />
<field name="sal" type="string" indexed="true" stored="true" required="true" />

在运行 solr 并尝试从示例核心导入数据时,我无法导入。我不断收到此错误。

我无法弄清楚我错在哪里,谁能帮助我。提前致谢。

【问题讨论】:

  • 单击错误行(红色),您将获得展开的堆栈跟踪。或者看看 solr.log。
  • @Persimmonium 我确实浏览了堆栈跟踪。它说有连接异常。我将驱动程序放在 lib 文件夹中并提供了正确的路径,但我得到了错误。
  • 会帮助把错误信息粘贴到这里吗??
  • 我编辑了帖子。

标签: solr cassandra integration


【解决方案1】:

JDBC 支持的最后一个 cassandra 版本是 1.2.5。后来,Datatstax 开发了 Cassandra 与 JAVA 应用程序连接所需的驱动程序。但是,datastax 驱动程序不能与 solr 一起使用,因为它们有自己的 DSE 搜索引擎。

This 可用的 jdbc 驱动与最新版本的 cassandra 兼容。使用这个 JDBC 我可以集成。

this JDBC 也可以工作。

【讨论】:

  • 如何与您提到的库集成?我总是收到以下错误: 原因:java.lang.ClassNotFoundException: org.apache.cassandra.cql.jdbc.AbstractJdbcType
  • 我提供了其他 JDBC 的链接,它也可以工作并且可以用于开发。
  • 我正在使用 DBSchema 之一。我可以连接 SQL Squirel,但是当我将相同的配置添加到 Solr 7.5 中时,我得到零记录。日志中没有错误,我看到它显示 1 Request sent 和 0 Received。有什么想法吗?
【解决方案2】:

该错误意味着 solr 无法通过 jdbc 访问 cassandra。首先,您应该检查您是否可以从 Solr 主机使用 java 连接到 cassandra,方法是使用 squirrelSQL 等数据库工具或类似工具。

一旦您确认可以通过这种方式访问​​它,请移至 solr。但是你有一些东西阻止它(防火墙,一些错误的端口,谁知道......)

【讨论】:

  • 谢谢。问题出在版本上。 Cassandra JDBC 仅支持旧版本的 Cassandra。 Datastax 为最新的 cassandra 开发了所需的驱动程序,但特别是仅针对它们的软件包。
  • 谢谢,但答案并不准确。请编辑有关版本支持的答案。
  • DataDirect's JDBC Driver for Cassandra 也支持最新版本的 cassandra。我使用 Progress DataDirect。如果您有任何问题,请查看并告诉我。
  • 谢谢,我正在尝试。我收到错误,例如无法加载驱动程序。要使用的 jar 文件是什么。我使用此链接安装documentation.progress.com/output/DataDirect/jdbcinstallhelp/…
【解决方案3】:

nodetool enablethrift 用于 cassandra 。您的错误显然是无法连接。连接被拒绝..启用节俭后使用nodetool info检查它。希望这能解决你的问题。

【讨论】:

    猜你喜欢
    • 2017-01-03
    • 1970-01-01
    • 2011-10-03
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 1970-01-01
    • 2015-08-24
    相关资源
    最近更新 更多