Как определить строку в моем CSV-файле, вызывающую сбой задания в моей карте массовой загрузки, в Apache Phoenix - PullRequest
2 голосов
/ 27 июня 2019

Я пытаюсь загрузить CSV-файл, хранящийся в формате hdf, с примерно 140 миллиардами строк, с помощью инструмента массовой загрузки Apache Phoenix.

export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/etc/hbase/conf:/etc/hadoop/conf
export HBASE_CONF_PATH=/etc/hbase/conf:/etc/hadoop/conf
hadoop jar phoenix-4.7.0.2.6.5.0-292-client.jar org.apache/phoenix.mapreduce.CsvBulkLoadTool -Ddfs.umaskmode=000 -zovh-mnode0,ovh-mnode1,ovh-mnode2,:2181:/hbase-secure --table <mytable> --input /user/hbase/<directory for sqoop import> -d \§  -e \\

Но происходит сбой с ошибкой, на 80% задачи сопоставления всегда говорится, что ошибка возникает в начальной строке 1:

Error: java.lang.RuntimeException: java.lang.RuntimeException: java.io.IOException: (startline 1) EOF reached before encapsulated token finished

Как определить строку в моем CSV, вызывающую ошибку? Файлы журнала, предоставляемые командой yarn logs, являются слишком общими.

Мой CSV-файл был создан с помощью этого импорта sqoop в таблицу SQL со следующими параметрами:

-D mapreduce.job.queuename=default --fields-terminated-by \§ --escaped-by \\  --enclosed-by '\"' --null-string 'null' --null-non-string '0'

Мой пользовательский запрос sqoop применяет функцию очистки к каждому полю varchar, чтобы убедиться, что мой csv не должен завершиться ошибкой. Пример для поля "lang":

replace(replace(replace(replace(ifnull(lang,"null"),"\""," "),"\n"," "),"\r"," "),"§"," ")

Параметры "-g" в массовом загрузчике для пропуска ошибок не работают (известная ошибка).

...