首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从cascalog写到MySQL不起作用。如何调试?

从cascalog写到MySQL不起作用。如何调试?
EN

Stack Overflow用户
提问于 2015-12-11 10:20:55
回答 1查看 76关注 0票数 1

我正在尝试将cascalog查询的结果写入MySQL-Database中。为此,我使用级联-jdbc,并遵循一个示例找到了这里。我在使用cascading-jdbc-corecascading-jdbc-mysql版本的3.0.0

我正从REPL中精确地执行以下代码:

代码语言:javascript
复制
 (let [data [["foo1" "bar1"]
             ["foo2" "bar2"]]
       query-params (into-array String ["?col1" "?col2"])
       column-names (into-array String ["col1" "col2"])
       update-params (into-array String ["?col1"])
       update-column-names (into-array String ["col1"])
       jdbc-tap (fn []
                  (let [scheme (JDBCScheme.
                                 (Fields. query-params)
                                 column-names
                                 nil
                                 (Fields. update-params)
                                 update-column-names)
                        table-desc (TableDesc.
                                     "test_table"
                                     query-params
                                     column-names
                                     (into-array String []))
                        tap (JDBCTap.
                               "jdbc:mysql://192.168.99.101:3306/test_db?user=root&password=my-secret-pw"
                               "com.mysql.jdbc.Driver"
                               table-desc
                               scheme)]
                     tap))]
    (?<- (jdbc-tap)
         [?col1 ?col2]
         (data ?col1 ?col2)))

当我运行代码时,我在REPL中看到这些日志:

代码语言:javascript
复制
15/12/11 11:08:44 INFO hadoop.FlowMapper: sinking to: JDBCTap{connectionUrl='jdbc:mysql://192.168.99.101:3306/test_db?user=root&password=my-secret-pw', driverClassName='com.mysql.jdbc.Driver', tableDesc=TableDesc{tableName='test_table', columnNames=[?col1, ?col2], columnDefs=[col1, col2], primaryKeys=[]}}
15/12/11 11:08:44 INFO mapred.Task: Task:attempt_local1324562503_0006_m_000000_0 is done. And is in the process of commiting
15/12/11 11:08:44 INFO mapred.LocalJobRunner:
15/12/11 11:08:44 INFO mapred.Task: Task 'attempt_local1324562503_0006_m_000000_0' done.
15/12/11 11:08:44 INFO mapred.LocalJobRunner: Finishing task: attempt_local1324562503_0006_m_000000_0
15/12/11 11:08:44 INFO mapred.LocalJobRunner: Map task executor complete.

一切看起来都很好。但是,没有写入任何数据。我使用tcpdump检查,甚至没有建立与本地MySQL数据库的连接。另外,当我将JDBC连接字符串更改为明显的错误值(不存在的用户名、不存在的DB名称,甚至数据库服务器的不存在的IP )时,我会得到同样的日志,不会抱怨任何事情。

另外,将jdbc-tap更改为stdout会产生预期的值。

我根本不知道如何调试这个。是否有可能产生错误输出?现在,我不知道到底出了什么问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-18 20:18:58

事实证明,我使用了错误的cascading-jdbc版本。Cascalog 2.1.1正在使用级联2.5.3。切换到2.5版本解决了问题。

但是,我无法从错误消息中看到这一点(因为没有错误消息)。cascading-jdbc的一位开发人员对我的指出这一点非常友好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34221155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档