博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL to Hbase 数据的抽取
阅读量:6218 次
发布时间:2019-06-21

本文共 1955 字,大约阅读时间需要 6 分钟。

一个简单粗暴的方法从MySQL数据库抽取数据到Hbase实现的过程:

rowKey利用MySQL表的主键ID特性作为HBASE的id

code:

####

#!/usr/bin/env python

#coding=utf-8

import sys

reload(sys)

sys.setdefaultencoding('utf-8')

import MySQLdb

import datetime,time

sys.path.append('/usr/lib/python2.6/site-packages/hbase')

from thrift import Thrift

from thrift.transport import TSocket

from thrift.transport import TTransport

from thrift.protocol import TBinaryProtocol

from hbase import Hbase

from hbase.ttypes import *

import csv

from hbase.ttypes import ColumnDescriptor, Mutation, BatchMutation, TRegionInfo

from hbase.ttypes import IOError, AlreadyExists

def client_conn():

    transport=TSocket.TSocket("172.16.10.87",9090)

    transport=TTransport.TBufferedTransport(transport)

    protocol=TBinaryProtocol.TBinaryProtocol(transport)

    client=Hbase.Client(protocol)

    transport.open()

    return client

if __name__=="__main__":

client=client_conn()

conn = MySQLdb.connect(host="172.161.110.10", user="dlan", passwd="root123", port=5029, db='coolqi', charset='utf8')

cur = conn.cursor()

sql="select * from ca_record where ca_time>=STR_TO_DATE('20170720','%Y%m%d')"

print sql

cur.execute(sql)

data=cur.fetchall()

for k in xrange(len(data)):

            datalist2=[]

            rowKey=data[k][0]

    print rowKey

            user_id=data[k][1]

            ca_result=data[k][2]

            ca_time=data[k][3]

            real_name=data[k][4]

            id_card=data[k][5]

            sex=data[k][6]

            datalist=[user_id,ca_result,ca_time,real_name,id_card,sex]

    datalist1=["user_id","ca_result","ca_time","real_name","id_card","sex"]

    for j in range(len(datalist)):

                args=str(datalist[j])

#print args

                if isinstance(args,str):

                    mutations="[Mutation(column="+"'"+datalist1[j]+':'+str(j)+"'"+","+"value="+"'"+str(args)+"')"+"]"

    datalist2.append(mutations)

    #print datalist2

client.mutateRow('ca_record',str(rowKey),[Mutation(column=datalist1[j]+':'+str(j),value=str(args))])

    #client.mutateRows('ca_record',datalist2)

###在for k in xrange(len(data)): 可以利用enumerate()函数减少上面的循环 .

本文转自 DBAspace 51CTO博客,原文链接:http://blog.51cto.com/dbaspace/1950007

转载地址:http://ialja.baihongyu.com/

你可能感兴趣的文章
Vue.2.0.5-条件渲染
查看>>
[译]AngularJS Services 获取后端数据
查看>>
scapy流量嗅探简单使用
查看>>
Hadoop Hive概念学习系列之hive的正则表达式初步(六)
查看>>
Leetcode: Combination Sum IV && Summary: The Key to Solve DP
查看>>
Hibernate整合C3P0实现连接池
查看>>
Apache vs. Nginx
查看>>
C++数值类型极限值的获取
查看>>
Bag标签之中的一个行代码实行中文分词实例3
查看>>
3295 落单的数 九章算法面试题
查看>>
synchronized同步块和volatile同步变量
查看>>
spark入门
查看>>
计算某个特定分隔符分隔的字符串的和
查看>>
解决IE11 Array没有find的方法
查看>>
webpack 引入jquery和第三方jquery插件
查看>>
损失函数的概率验证及性质
查看>>
C#-----------------------------回收机制中Destroy与null的作用
查看>>
mysql读写分离总结
查看>>
ubuntu默认防火墙
查看>>
使用 GeoIP2 获取 IP 的地理位置
查看>>