python读取kafka,输出到Vertica数据库
# 主测试
# https://docs.python.org/2/library/json.html
import sys
import json
import vertica_python
import time
import os
from pykafka import KafkaClient # 导入的vertica_python和pykafka包需要pip install安装 # 显示当前时间
print('开始时间', time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))
print(sys.getdefaultencoding())
client = KafkaClient(hosts="192.168.1.1:9092") # 填写kafka地址和端口,一般是9092端口
# client.topics # 查看所有topic
topic = client.topics[b'topic'] # 选择一个topic
consumer = topic.get_simple_consumer(consumer_timeout_ms=2000, auto_commit_enable=1) # 等待5秒无新数据,退出
data_group = []
conn_info = {'host': '192.168.1.1', 'port': 1, 'user': 'a', 'password': 'b',
'database': 'c', 'read_timeout': 600, 'unicode_error': 'strict', 'ssl': False} # 填写数据库连接信息
# simple connection, with manual close
connection = vertica_python.connect(**conn_info)
cur = connection.cursor()
a_error_count = 0
a_success_count = 0
path_os = os.path.abspath('offset.txt') # 将数据偏移量offset写入文件
f1 = open(path_os, 'r', encoding='utf8')
a_offset_start = int(f1.readline()) # 从a_offset_start开始读数据
print(a_offset_start)
# a_offset_start = 3000 # 可以手工指定从哪里开始读取数据,排错用
f1.close()
for message in consumer: # 循环0
if message is not None and message.offset > a_offset_start:
try:
a = message.value.decode('UTF-8')
data_group.append(json.loads(a))
c = message.offset
for item in data_group:
str1 = "insert into 表名(列名) values "+ "('" + str(c) \ # 将offset值也写入数据库
+ "'," + "'%s','%s');\r\n" % ( item['列名1'], item['列名2'])
print(str1)
cur.execute(str1)
connection.commit()
a_success_count += 1
data_group.pop()
except:
print('error_message')
a_error_count += 1
continue
c1 = message.offset
f = open(path_os, 'w+' , encoding='utf8')
f.truncate()
f.write(str(c1))
f.write('\n' + '开始时间=' + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))
f.write('\n' + 'a_success_count=' + str(a_success_count))
f.write('\n' + 'a_error_count=' + str(a_error_count))
f.close()
python读取kafka,输出到Vertica数据库的更多相关文章
- SparkStreaming python 读取kafka数据将结果输出到单个指定本地文件
# -*- coding: UTF-8 -*- #!/bin/env python3 # filename readFromKafkaStreamingGetLocation.py import IP ...
- 使用python读取配置文件并从mysql数据库中获取数据进行传参(基于Httprunner)
最近在使用httprunner进行接口测试,在传参时,用到了三种方法:(1)从csv文件中获取:(2)在config中声名然后进行引用:(3)从函数中获取.在测试过程中,往往有些参数是需要从数据库中获 ...
- Python 读取和输出到txt
读txt文件 python常用的读取文件函数有三种read().readline().readlines() read() #一次性读取文本中全部的内容,以字符串的形式返回结果 with open(& ...
- 孤荷凌寒自学python第五十二天初次尝试使用python读取Firebase数据库中记录
孤荷凌寒自学python第五十二天初次尝试使用python读取Firebase数据库中记录 (完整学习过程屏幕记录视频地址在文末) 今天继续研究Firebase数据库,利用google免费提供的这个数 ...
- python读取数据库并把数据写入本地文件
一,介绍 上周用jmeter做性能测试时,接口B传入的参数需要依赖接口A生成的借贷申请ID,接口A运行完需要把生成的借贷申请ID导出来到一个文件,作为参数传给接口B,刚开始的时候,手动去数据库倒, 倒 ...
- 使用python读取MS-SQL数据库
使用python读取MS-SQL中的数据,这里使用到模板pymssql. 因为不是python自带的模板,所以首先需要使用pip安装,对应命令:pip install pymssql 建立main.p ...
- python读取数据库出txt报表
python出报表使用到了数据库访问,文件读写,字符串切片处理.还可以扩展到电子邮件的发送,异常处理以及定时批任务. 总之在学习中发现还是有蛮多乐趣在其中. #coding=utf-8 ' impor ...
- python读取数据库mysql报错
昨天在学习PYTHON读取数据库的知识时,一直在报错,找不到原因. 最后同事说是语法错误. import sysreload(sys)sys.setdefaultencoding('gb18030') ...
- kafka实战教程(python操作kafka),kafka配置文件详解
kafka实战教程(python操作kafka),kafka配置文件详解 应用往Kafka写数据的原因有很多:用户行为分析.日志存储.异步通信等.多样化的使用场景带来了多样化的需求:消息是否能丢失?是 ...
随机推荐
- fastposter v2.10.0 简单易用的海报生成器
fastposter海报生成器是一款快速开发海报的工具.只需上传一张背景图,在对应的位置放上组件(文字.图片.二维.头像)即可生成海报. 点击代码直接生成各种语言的调用代码,方便快速开发. 现已服务众 ...
- JVM调优工具使用手册
作为Java开发人员,我们肯定知道JDK的bin目录下有"java.exe"."javac.exe"这两个命令工具,这也是我们平时用得最多的工具.但其实bi ...
- 嵌入式-C语言基础:理解形参和实参的区别
#include<stdio.h> //实参:函数原型中声明函数后面带的参数 int test(int x)//函数原型 { //函数体 printf("test里面的x地址=% ...
- perl中ENV的使用
在打印环境变量的时候可以用到.实际上是%ENV,perl中的哈希变量,里面保存的是环境变量.键是环境变量名,值是环境变量值.例如,有一个环境变量是PATH,其值为C:\windows,那么,打印这个环 ...
- EventBridge助力阿里云视觉智能开放平台AI智能存储实践
本文作者:李建,阿里巴巴达摩院技术专家. 01 视觉智能开放平台(VIAPI)业务场景介绍 阿里云视觉智能开放平台(简称 VIAPI),是基于之前很多技术实践经验积累的 AI 能力的沉淀平台.目前整个 ...
- gin领域层:用户实体编写和值对象(初步)
1.用户实体和值对象 2. 要做的事 3.常见的四层模型 4.Domin层 5.值对象
- 大前端系统学-了解html
标签: 使用尖括号包起来的就是标签,例如我们看到的 <html></html> 一对标签 <head> 开始标签 </head> 结束标签 < ...
- 我的Vue之旅 11 Vuex 实现购物车
Vue CartView.vue script 数组的filter函数需要return显式返回布尔值,该方法得到一个新数组. 使用Vuex store的modules方式,注意读取状态的方式 this ...
- webapi+vue跨域session丢失解决方法
前后端分离中在webapi设置可以跨域,在web.config文件中添加 <httpProtocol> <customHeaders> <ad ...
- Composer 部署国内镜像
众所周知的原因,原版的镜像下载会比较慢,建议改成阿里的会比较快. 1 备份你的原镜像文件,以免出错后可以恢复.mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum ...