Проблема с непечатаемым символом при экспорте данных CSV (Windows-1252) в куст - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь создать таблицу кустов поверх следующего набора данных CSV, используя OpenCSVSerde

WITH SERDEPROPERTIES ("quoteChar"='\"', "separatorChar"=',')

, но таблица кустов теряет знак £ и показывает символ замены .

FWID,GENDER,Ethnicity,AgeAtPeriodEnd,RC_UnitCost,QUANTITY,ElemTypeDesc
2100001,F,White,WEEK,"£2,027.07",3455,AA - Community Meals
2100011,F,White,YEAR,"£75.00,488776",AA - Community Meals
2100044,M,White,WEEK,"£5.40,39.0",123,Ld-ExtDc - Day
2100044,M,White,WEEK,£5.40,9856,FF - Community Meals
2100044,M,White,WEEK,£5.40,"789,193",FF - Community Meals
2100044,M,White,WEEK,£5.40,"876,241",FE - Community Meals
2100044,M,White,WEEK,£5.40,3888,"Community Meals,ExtDc - Day"
2100044,M,White,WEEK,£5.40,235,Ld-ExtDc - Day
2100044,M,White,WEEK,£5.40,8789,FE - Community Meals
2100044,M,White,WEEK,"£10.07,027.7",16478,FE - Community Meals
2100051,F,White,WEEK,£470.00,12375,RG - Community Meals

Кроме того, я попытался создать таблицу с использованием LazySimpleSerDe

WITH SERDEPROPERTIES ( 'escape.delim'='\"', 'field.delim'=',', 'line.delim'='\n', 'serialization.encoding'='windows-1252')

В этом случае данные обрабатываются правильно со знаком £, но выравнивание значений не работает из-заотсутствующие quotechar как \".

Пожалуйста, предложите способ решения этой проблемы.

1 Ответ

0 голосов
/ 20 июня 2019

Вот один из способов сделать это:

  1. Открыть файл CSV в Notepad ++, преобразовать кодировку в UTF-8 и передать файл в HDFS.
  2. Создание внешней таблицы со следующими свойствами.
    ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
    WITH SERDEPROPERTIES (
      'field.delim'=',',
      'line.delim'='\n',
      'serialization.format'=',',
      'serialization.encoding'='UTF-8')
    STORED AS INPUTFORMAT
      'org.apache.hadoop.mapred.TextInputFormat'
    OUTPUTFORMAT
      'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
    TBLPROPERTIES("skip.header.line.count"="1")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...