ran9nar 2016-05-10 07:21 采纳率: 71.4%
浏览 1190
已采纳

使用Python编写Storm程序,无法将结果写入MySQL

我使用Python作为编程语言写一个关联关系挖掘的程序部署在Storm集群,将jar包提交到集群后无法将结果写入数据库,贴上写入结果的bolt代码,希望大家帮忙看看,不胜感激:

 #coding=utf-8
import MySQLdb
import logging
from pyleus.storm import SimpleBolt

log = logging.getLogger('log_results')

def write_result(freqset,count):#将结果写入数据库
    conn = MySQLdb.connect(host='10.1.1.5',user='root',passwd='',db='datamining',port=3306)
    cur = conn.cursor()
    st = ''
    for i in freqset:#转换成字符串
        st = st + i + ','
    sql = "select * from result where freqset = " + "'"+ st +"'"#查询是否已经在数据库中存在
    cur.execute(sql)
    returned_value = cur.fetchone()
    if returned_value != None:#如果在则更新计数值
        supnum = returned_value[1]+count
        sql1 = "update result set supnum = %s where freqset = '%s';" %(str(supnum),st)
        cur.execute(sql1)
        conn.commit
    else:#不在则插入数据
        value = [st,count]
        sql2 = 'insert into result values(%s,%s)'
        cur.execute(sql2,value)
        conn.commit()

    cur.close()
    conn.close()


class LogResultsBolt(SimpleBolt):

    def process_tuple(self, tup):#接收上游频繁集,及其计数值
        freqset, count = tup.values
        log.debug("%s: %d", freqset, count)#写入log中
        write_result(freqset, count)

if __name__ == '__main__':
    logging.basicConfig(
        level=logging.DEBUG,
        filename='/tmp/results.log',
        format="%(message)s",
        filemode='a',
    )

    LogResultsBolt().run()
  • 写回答

2条回答 默认 最新

  • ran9nar 2016-05-11 10:02
    关注

    问题已解决除了在requirements.txt中写‘MySQL-python’,在集群各个节点上也要安装MySQL-python

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 java大作业爬取网页
  • ¥15 怎么获取欧易的btc永续合约和交割合约的5m级的历史数据用来回测套利策略?
  • ¥15 有没有办法利用libusb读取usb设备数据
  • ¥15 为什么openeluer里面按不了python3呢?
  • ¥15 关于#matlab#的问题:训练序列与输入层维度不一样
  • ¥15 关于Ubuntu20.04.3LTS遇到的问题:在安装完CUDA驱动后,电脑会进入卡死的情况,但可以通过键盘按键进入安全重启,但重启完又会进入该情况!
  • ¥15 关于#嵌入式硬件#的问题:树莓派第一天重装配置python和opencv后第二天打开就成这样,瞎捣鼓搞出来文件夹还是没把原来的界面调回来
  • ¥20 Arduino 循迹小车程序电路出错故障求解
  • ¥20 Arduino 循迹小车程序电路出错故障求解
  • ¥15 C++数组中找第二小的数字程序纠错