I have the following algorithm ,
private void writetodb()
{
using(var reader = File.OpenRead("C:\Data.csv");
using(var parser = new TextFieldParser(reader))
{
//Do some opeartions
while(!parser.EndOfData)
{
//Do operations
//Take 500 rows of data and put it in dataset
Thread thread = new thread(() => WriteTodb(tablename, set));
thread.Start();
Thread.Sleep(5000);
}
}
}
public void WriteTodb(string table, CellSet set)
{
//WriteToDB
//Edit: This statement will write to hbase db in hdinsight
hbase.StoreCells(TableName, set);
}
这种方法对于不超过500 mb的数据完全正常,但在此之后会出现内存溢出异常
。
我非常确定这是由于线程造成的,但使用线程是必须的,我无法改变架构。
有人能告诉我在上述程序中需要进行哪些线程编程修改以避免内存异常吗?
parser.EndOfData
总是返回 false... - tzachs