hdfs上的csv文件导入mysql表_如何使用python脚本将hdfs上的csv文件导入mysql数据库

我有一个用例,在聚合(使用map reduce)之后,将生成一个csv文件。现在,我想将这个驻留在hdfs上的csv文件直接导入mysql数据库。

这是我写的代码:-在#!/usr/bin/python

import subprocess

import sys

import csv

import MySQLdb

mydb = MySQLdb.connect(host='localhost',

user='root',

passwd='',

db='test')

cursor = mydb.cursor()

def main():

#csv_data = csv.reader(file(path/to/local/testcsv.csv))

csv_data = subprocess.Popen(["hadoop", "fs", "-cat", 'path/to/hdfs/testcsv.csv'], stdout=subprocess.PIPE)

#for row in csv_data

for row in csv_data.stdout:

print row

cursor.execute('INSERT INTO testcsv(names, \

classes, mark )' \

'VALUES("%s", "%s", "%s")',

row)

mydb.commit()

mydb.close()

if __name__ == "__main__":

main()

#close the connection to the database.

print "Done"

在测试csv.csv包含三个字段名、类和标记。我在mysql中创建了testcsv表,并尝试使用oozie工作流导入。当从本地文件系统而不是hdfs导入csv时,我的oozie工作流运行良好(在注释行中显示)。

运行此代码不会将数据导入mysql。我是不是犯了什么错误?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值