2016-10-26 3 views
0

데이터웨어 하우스의 메시지 데이터가 포함 된 1 억 5 천만 행을 EC2 인스턴스로 가져 오려고합니다. 내 디스크에 90GB의 여유 공간이 있습니다. 나는 실행 내 쿼리를 넣을 때, 다음과 같은 오류가 내가 얻을 수 있습니다 :PyODBC : /tmp/odbc.log 파일이 90GB를 초과하여 데이터웨어 하우스에서 데이터 가져 오기를 중지합니다.

Traceback (most recent call last): 
    File "/usr/local/anaconda/lib/python3.5/site-packages/sqlalchemy/engine/result.py", line 964, in fetchall 
    l = self.process_rows(self._fetchall_impl()) 
    File "/usr/local/anaconda/lib/python3.5/site-packages/sqlalchemy/engine/result.py", line 915, in _fetchall_impl 
    return self.cursor.fetchall() 
pyodbc.Error: ('08S01', '[08S01] [FreeTDS][SQL Server]Read from the server failed (20004) (SQLFetch)') 

The above exception was the direct cause of the following exception: 

Traceback (most recent call last): 
    File "en_str.py", line 45, in <module> 
    INNER JOIN notified.Message m ON c.MessageID = m.MessageID where c.CreateDate>'2016-01-01 00:00:00.0';''',db007_cnxn) 
    File "/usr/local/anaconda/lib/python3.5/site-packages/pandas/io/sql.py", line 331, in read_sql_query 
    parse_dates=parse_dates, chunksize=chunksize) 
    File "/usr/local/anaconda/lib/python3.5/site-packages/pandas/io/sql.py", line 1092, in read_query 
    data = result.fetchall() 
    File "/usr/local/anaconda/lib/python3.5/site-packages/sqlalchemy/engine/result.py", line 970, in fetchall 
    self.cursor, self.context) 
    File "/usr/local/anaconda/lib/python3.5/site-packages/sqlalchemy/engine/base.py", line 1341, in _handle_dbapi_exception 
    exc_info 
    File "/usr/local/anaconda/lib/python3.5/site-packages/sqlalchemy/util/compat.py", line 202, in raise_from_cause 
    reraise(type(exception), exception, tb=exc_tb, cause=cause) 
    File "/usr/local/anaconda/lib/python3.5/site-packages/sqlalchemy/util/compat.py", line 185, in reraise 
    raise value.with_traceback(tb) 
    File "/usr/local/anaconda/lib/python3.5/site-packages/sqlalchemy/engine/result.py", line 964, in fetchall 
    l = self.process_rows(self._fetchall_impl()) 
    File "/usr/local/anaconda/lib/python3.5/site-packages/sqlalchemy/engine/result.py", line 915, in _fetchall_impl 
    return self.cursor.fetchall() 
sqlalchemy.exc.DBAPIError: (pyodbc.Error) ('08S01', '[08S01] [FreeTDS][SQL Server]Read from the server failed (20004) (SQLFetch)') 

내 디스크 공간이 90기가바이트 공간을 복용 TMP 폴더에 완전하고 odbc.log 파일을 가져옵니다. 100TB 공간이있는 다른 마운트 된 디스크가 있지만 odbc.log는 tmp 폴더에서만 생성됩니다. 이것에 대한 해결책은 무엇입니까? 이 문제가 어떻게 해결 될 수 있는지에 대한 생각은? 또는 100 바이트 공간 디스크에서 100 TB 공간의 디스크로 odbc.log 파일 위치를 변경하는 방법은 무엇입니까?

또한 ec2 인스턴스 위치를 제공하는 대신 s3 버킷 위치를 지정하면이 odbc.log 파일을 피할 수 있습니까?

도움이 될 것입니다.

답변

0

자세한 FreeTDS 로그온 정보가있는 것처럼 보입니다. 대부분의 경우 config 파일은 /etc/freetds.conf 또는 /etc/freetds/freetds.conf에 있습니다.

FreeTDS 로그에서 dump file을 찾고 싶을 것입니다. 또한 로깅을 켤 수 있으므로 odbcinst.ini을 확인하십시오.

아마도 다양한 로깅 기능 중 하나가 /tmp/odbc.log을 가리키며 그 원인을 찾을 수 있습니다. 행운을 빕니다!