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

6bc51xsx  于 2021-06-02  发布在  Hadoop
关注(0)|答案(0)|浏览(341)

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


# !/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"

testcsv.csv包含三个字段名、类和标记。我在mysql中创建了testcsv表,并尝试使用oozie工作流导入。当从本地文件系统而不是hdfs导入csv时,我的oozie工作流运行良好(以注解行显示)。运行此代码不会将数据导入mysql。我做错什么了吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题