【问题标题】:Duke Fast Deduplication: java.lang.UnsupportedOperationException: Operation not yet supported?Duke 快速重复数据删除:java.lang.UnsupportedOperationException:还不支持操作?
【发布时间】:2012-10-02 11:04:31
【问题描述】:

我正在尝试使用Duke Fast Deduplication Engine 在我工作的公司的数据库中搜索一些重复记录。

我像这样从命令行运行它:

java -cp "C:\utils\duke-0.6\duke-0.6.jar;C:\utils\duke-0.6\lucene-core-3.6.1.jar" no.priv.garshol.duke.Duke --showmatches --verbose .\config.xml

但我得到一个错误:

Exception in thread "main" java.lang.UnsupportedOperationException: Operation no
t yet supported
        at sun.jdbc.odbc.JdbcOdbcResultSet.isClosed(Unknown Source)
        at no.priv.garshol.duke.datasources.JDBCDataSource$JDBCIterator.close(JD
BCDataSource.java:115)
        at no.priv.garshol.duke.Processor.deduplicate(Processor.java:152)
        at no.priv.garshol.duke.Duke.main_(Duke.java:135)
        at no.priv.garshol.duke.Duke.main(Duke.java:38)

我的配置文件如下所示:

<duke>
   <schema>
         <threshold>0.82</threshold>
         <maybe-threshold>0.80</maybe-threshold>
         <path>test</path>

         <property type="id">
              <name>ID</name>
         </property>

         <property>
             <name>LNAME</name>
             <comparator>no.priv.garshol.duke.comparators.ExactComparator</comparator>
             <low>0.6</low>
             <high>0.8</high>
         </property>

         <property>
             <name>FNAME</name>
             <comparator>no.priv.garshol.duke.comparators.ExactComparator</comparator>
             <low>0.6</low>
             <high>0.8</high>
         </property>

         <property>
             <name>MNAME</name>
             <comparator>no.priv.garshol.duke.comparators.ExactComparator</comparator>
             <low>0.3</low>
             <high>0.5</high>
         </property>

         <property>
             <name>SSN</name>
             <comparator>no.priv.garshol.duke.comparators.ExactComparator</comparator>
             <low>0.0</low>
             <high>1.0</high>
         </property>

   </schema>
   <jdbc>
          <param name="driver-class" value="sun.jdbc.odbc.JdbcOdbcDriver" />
          <param name="connection-string" value="jdbc:odbc:VT_DeDupe" />
          <param name="user-name" value="aleer" />
          <param name="password" value="**" />
          <param name="query" value="select SocialSecurityNumber, LastName, FirstName, MiddleName, empssn from T_Employees" />

          <column name="SocialSecurityNumber" property="ID" />
          <column name="LastName" property="LNAME" />
          <column name="FirstName" property="FNAME" />
          <column name="MiddleName" property="MNAME" />
          <column name="empssn" property="SSN" />
   </jdbc>
</duke>

它并没有真正告诉我什么是不受支持的……我只是在尝试,配置还没有什么严重的问题。

【问题讨论】:

    标签: java lucene jdbc-odbc record-linkage duke


    【解决方案1】:

    您使用的是哪个 Java 版本?
    sun.jdbc.odbc.JdbcOdbcResultSet.isClosed 最早出现在 Java 1.6 中。它在 v1.7 中仍然看起来像这样(我还没有在 Java 8 中检查过):

    public boolean isClosed() throws SQLException {
        throw new UnsupportedOperationException("Operation not yet supported");
    }
    

    所以干脆不要调用那个方法。使用其他方法检查结果集是否已关闭。

    或者如果您无法更改代码,请向项目作者寻求帮助(我看到关闭 RS 时有 an effort to solve exception)。

    【讨论】:

    • 我把它从 hg repo 中取出并使用 maven3 编译。新的 jar 文件产生相同的错误;我假设您正在谈论的修复是链接右侧显示的修订版 30a12f2fb61c。这似乎是我检查过的版本,但不确定二进制文件。
    【解决方案2】:

    正如 mbonaci 所说,问题在于 JDBC 驱动程序的 isClosed() 方法没有实现。即使实现它并不比简单地写“return closed”更难。

    我现在为这个问题添加了一个丑陋的解决方法。请执行“hg pull”并重试。

    【讨论】:

    猜你喜欢
    • 2014-09-24
    • 2014-03-22
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    相关资源
    最近更新 更多