数据加载 SAS 到 Vertica 的性能问题
Performance issue on dataload SAS to Vertica
我们的组织正在从 PADB 迁移到 Vertica。
我们有一些使用 SAS 的分析师。
我将他们的工具和宏转换为能够从 PADB 工作到 Vertica。
但是当涉及到从 SAS 到 Vertica 的数据加载时,性能与以前不同。
我发现执行时间从 1-2 分钟变成了 2-3 小时。
我正在使用 ODBC,因为我无法使用其他方法,例如:
proc sql exec;
connect to odbc (datasrc=EDW authdomain=VERTICA);
execute(COPY CRM_COMMON.new_load_test FROM local
'/data/saswork/SAS_work765E0000405D_cammsaim238/SAS_workB45C0000405D_cammsaim238/test1.csv' PARSER fcsvparser() ) by odbc;
disconnect from odbc;
quit;
它不工作我收到一张便条:注意:没有数据 found/modified。
我尝试使用 proc append 和 proc dataset 以及 proc copy 一切都很慢。
我尝试使用 bulkload,但它不可用。
知道我可以做什么或尝试加快数据传输速度吗?
让我知道!
- - - -更新 - -
我尝试了各种其他方法,但仍然出现错误,当我检查日志时,我的数据中似乎存在空值问题……有什么想法吗?
proc sql exec;
/* Loading converted csv file to ParAccel */ connect to odbc (datasrc=EDW authdomain=VERTICA); execute(COPY CRM_COMMON.new_load_test FROM local '/data/saswork/SAS_work765E0000405D_cammsaim238/SAS_workB45C0000405D_cammsaim238/test1.csv' DELIMITER ',' ) by odbc;
disconnect from odbc;
quit;
设法加载数据:
我使用出错时中止选项来获取有关错误的更多详细信息,还使用拒绝选项来查看失败的记录
最终问题出在时间戳正好为空值
我还没有找到合适的解决方案来加载任何类型的数据,而不是空值和格式,但我设法比使用 ODBC
更快地加载数据
我尝试了尾随 nullcols 的选项,但它对空值没有帮助
proc sql exec;
/* Loading converted csv file to ParAccel */
connect to odbc (datasrc=EDW authdomain=VERTICA);
execute(COPY CRM_COMMON.test_low FROM local '/data/saswork/SAS_work765E0000405D_cammsaim238/SAS_workB45C0000405D_cammsaim238/test_low.csv' DELIMITER ',' abort on error
rejected data '/data/saswork/SAS_work765E0000405D_cammsaim238/SAS_workB45C0000405D_cammsaim238/reject_low.csv' ) by odbc;
disconnect from odbc;
quit;
我们的组织正在从 PADB 迁移到 Vertica。 我们有一些使用 SAS 的分析师。 我将他们的工具和宏转换为能够从 PADB 工作到 Vertica。 但是当涉及到从 SAS 到 Vertica 的数据加载时,性能与以前不同。
我发现执行时间从 1-2 分钟变成了 2-3 小时。
我正在使用 ODBC,因为我无法使用其他方法,例如:
proc sql exec;
connect to odbc (datasrc=EDW authdomain=VERTICA);
execute(COPY CRM_COMMON.new_load_test FROM local
'/data/saswork/SAS_work765E0000405D_cammsaim238/SAS_workB45C0000405D_cammsaim238/test1.csv' PARSER fcsvparser() ) by odbc;
disconnect from odbc;
quit;
它不工作我收到一张便条:注意:没有数据 found/modified。
我尝试使用 proc append 和 proc dataset 以及 proc copy 一切都很慢。 我尝试使用 bulkload,但它不可用。
知道我可以做什么或尝试加快数据传输速度吗? 让我知道! - - - -更新 - - 我尝试了各种其他方法,但仍然出现错误,当我检查日志时,我的数据中似乎存在空值问题……有什么想法吗?
proc sql exec;
/* Loading converted csv file to ParAccel */ connect to odbc (datasrc=EDW authdomain=VERTICA); execute(COPY CRM_COMMON.new_load_test FROM local '/data/saswork/SAS_work765E0000405D_cammsaim238/SAS_workB45C0000405D_cammsaim238/test1.csv' DELIMITER ',' ) by odbc;
disconnect from odbc;
quit;
设法加载数据:
我使用出错时中止选项来获取有关错误的更多详细信息,还使用拒绝选项来查看失败的记录
最终问题出在时间戳正好为空值 我还没有找到合适的解决方案来加载任何类型的数据,而不是空值和格式,但我设法比使用 ODBC
更快地加载数据我尝试了尾随 nullcols 的选项,但它对空值没有帮助
proc sql exec;
/* Loading converted csv file to ParAccel */
connect to odbc (datasrc=EDW authdomain=VERTICA);
execute(COPY CRM_COMMON.test_low FROM local '/data/saswork/SAS_work765E0000405D_cammsaim238/SAS_workB45C0000405D_cammsaim238/test_low.csv' DELIMITER ',' abort on error
rejected data '/data/saswork/SAS_work765E0000405D_cammsaim238/SAS_workB45C0000405D_cammsaim238/reject_low.csv' ) by odbc;
disconnect from odbc;
quit;