Pivotal HDB — Слишком длинная строка данных жалоб. Вероятно, из-за неверных данных csv.

У нас есть небольшой опорный кластер Hadoop-hawq. Мы создали на нем внешнюю таблицу и указываем на файлы hadoop.

Данная среда:

Версия продукта: (HAWQ 1.3.0.2 сборка 14421) на x86_64-unknown-linux-gnu, скомпилированная 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';

Любая помощь приветствуется ?


person NEO    schedule 11.01.2016    source источник
comment
Можете ли вы предоставить DDL для trcd_stg0 и первые несколько строк файлов из /tmp/def_rcd?   -  person Jon Roberts    schedule 11.01.2016


Ответы (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 и пытались увеличить значение этого параметра?

person Goden Yao    schedule 11.01.2016
comment
Спасибо за ответ. Мы внесли соответствующие изменения в значение по умолчанию (SET gp_max_csv_line_length TO '4194304'). 4194394 байт. Но все равно выдает ту же ошибку. - person NEO; 11.01.2016

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

person dlynch    schedule 11.01.2016
comment
Мы превысили параметр максимальной длины до 4 МБ, и ошибка остается - person NEO; 12.01.2016