我有一个5亿行~ 27 GB大小的纯文本文件存储在AWS S3上。我已经使用下面的代码和它一直在运行从过去3个小时。我试着用pyspark寻找编码方法,但没有找到任何这样的函数。下面是代码。
import pandas as pd
import hashlib
import csv
chunksize = 10000000
def convert_email(email):
cp500_email = email.encode('cp500')
sha1 = hashlib.sha1(cp500_email).hexdigest()
return email, cp500_email, sha1
reader = pd.read_csv("s3://bucket/cp500_input.csv", chunksize=chunksize , sep='|')
for chunk in reader:
chunk[['EMAIL', 'CP500_EMAIL', 'SHA']] = chunk['EMAIL'].apply(convert_email).apply(pd.Series)
chunk[['EMAIL', 'CP500_EMAIL', 'SHA']].to_csv("s3://bucket/cp500_output.csv")
字符串
2条答案
按热度按时间jgwigjjp1#
是的,由于内存的限制,依靠pandas来处理这个大小的文件可能不是最有效的方法,相反,可以使用
PySpark
以分布式的方式处理大文件,从而提高效率和性能,所以可以这样做:字符串
祝你好运!
dxxyhpgq2#
谢谢@Freeman。
提供的代码由于udf函数中的结构类型而引发错误。我做了一些修改,下面是工作代码。
字符串