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

2024-09-28 22:19:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个用例,在聚合(使用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。我是不是犯了什么错误?


Tags: 文件csvto代码importdatamainmysql