2016-01-11 1 views
0

У нас есть небольшой ключевой кластер Hadoop-hawq. Мы создали на нем externtal table и указали на файлы hadoop.Pivotal HDB -Complaints «Линия данных слишком длинна. Вероятно, из-за недействительных данных csv»

Учитывая окружающей среды:

Версия продукта: (HAWQ 1.3.0.2 сборка 14421) на x86_64-неизвестно-Linux-гну, составленному GCC GCC (GCC) 4.4.2

Пробовал :

Когда мы пытаемся читать из внешней таблицы с помощью команды. т.е.

test=# select count(*) from EXT_TAB ; GETTING following error : ERROR: data line too long. likely due to invalid csv data (seg0 slice1 SEG0.HOSTNAME.COM:40000 pid=447247) 
DETAIL: External table trcd_stg0, line 12059 of pxf://hostname/tmp/def_rcd/?profile=HdfsTextSimple: "2012-08-06 00:00:00.0^2012-08-06 00:00:00.0^6552^2016-01-09 03:15:43.427^0005567^COMPLAINTS ..." : 

Дополнительная информация:

DDL внешней таблицы:

CREATE READABLE EXTERNAL TABLE sysprocompanyb.trcd_stg0 
(
    "DispDt" DATE, 
    "InvoiceDt" DATE, 
    "ID" INTEGER, 
    time timestamp without time zone, 
    "Customer" CHAR(7), 
    "CustomerName" CHARACTER VARYING(30), 
    "MasterAccount" CHAR(7), 
    "MasterAccName" CHAR(30), 
    "SalesOrder" CHAR(6), 
    "SalesOrderLine" NUMERIC(4, 0), 
    "OrderStatus" CHAR(200), 
    "MStockCode" CHAR(30), 
    "MStockDes" CHARACTER VARYING(500), 
    "MWarehouse" CHAR(200), 
    "MOrderQty" NUMERIC(10, 3), 
    "MShipQty" NUMERIC(10, 3), 
    "MBackOrderQty" NUMERIC(10, 3), 
    "MUnitCost" NUMERIC(15, 5), 
    "MPrice" NUMERIC(15, 5), 
    "MProductClass" CHAR(200), 
    "Salesperson" CHAR(200), 
    "CustomerPoNumber" CHAR(30), 
    "OrderDate" DATE, 
    "ReqShipDate" DATE, 
    "DispatchesMade" CHAR(1), 
    "NumDispatches" NUMERIC(4, 0), 
    "OrderValue" NUMERIC(26, 8), 
    "BOValue" NUMERIC(26, 8), 
    "OrdQtyInEaches" NUMERIC(21, 9), 
    "BOQtyInEaches" NUMERIC(21, 9), 
    "DispQty" NUMERIC(38, 3), 
    "DispQtyInEaches" NUMERIC(38, 9), 
    "CustomerClass" CHAR(200), 
    "MLineShipDate" DATE 
) 
LOCATION (
    'pxf://HOSTNAME-HA/tmp/def_rcd/?profile=HdfsTextSimple' 
) 
FORMAT 'CSV' (delimiter '^' null '' escape '"' quote '"') 
ENCODING 'UTF8'; 

Любая помощь будет высоко ценится?

+0

Можете ли вы предоставить DDL для trcd_stg0 и первых нескольких строк файлов из/tmp/def_rcd? –

ответ

2

на основе исходного кода: https://github.com/apache/incubator-hawq/blob/e48a07b0d8a5c8d41d2d4aaaa70254867b11ee11/src/backend/commands/copy.c

Ошибка возникает, когда cstate->line_buf.len >= gp_max_csv_line_length верно. В соответствии с: http://hawq.docs.pivotal.io/docs-hawq/guc_config-gp_max_csv_line_length.html

длина по умолчанию csv равна 1048576 байт. Вы проверили длину файла csv и попытались увеличить значение этого параметра?

+0

Спасибо за ответ. Мы выполнили соответствующие значения по умолчанию для изменений (SET gp_max_csv_line_length TO '4194304'). 4194394 Байты. Но все равно бросать ту же ошибку. – NEO

2

проверить, соответствует ли строка 12059 числу столбцов количеству полей с разделителями. Если некоторые строки группируются во время разбора, мы можем превысить максимальную длину строки. это обычно происходит из-за плохих данных echo $ LINE | awk -F "^" '(total = total + NF); END {print total} '

+0

Мы превысили параметр максимальной длины до 4 МБ, и ошибка остается – NEO

Смежные вопросы