У меня хорошее сочетание запятых, одинарных и двойных кавычек в данных csv. Сначала я попытался создать таблицу Hive непосредственно из файла csv, и это работает.
Однако заказчик хочет, чтобы паркетный стол был доступен как для Hive, так и для Impala. Поэтому я изменил один простой запрос, который строит таблицу кустов, на запрос из трех частей, который
Теперь сам файл csv импортируется в среду Hive. Я пробовал два способа сделать это
# 1 используйте текст для столбцов, чтобы разделить все столбцы и
# 2 без текста в столбцы, а прямой импорт.
Проблема №1 в том, что есть дополнительный ручной шаг. Проблема с подходом №2 заключается в том, что весь текст теперь отображается в 1 столбце, и это нормально. Но когда я использую запрос из трех частей для его импорта, данные не выравниваются в итоговой таблице. Пример записи в таблице1 показан ниже -
[email protected],"FirstName","LastName","Xyz, Abcd; Damage Claim T20212020","Hdgsd, Fashs; Damage Claim T20212020","","[email protected]","10/10/1600 4:04:22 PM","10/10/1600 4:04:22 PM","10/10/1600 12:00:00 AM","Accepted","11/11/1600 6:22:48 AM","14428","SOMENAME"
Мой первый запрос здесь-
Create External Table If Not Exists ${environment}folder.sample_table(
email1 string,
firstName string,
lastName string,
matter string,
holdname string,
id1 string,
email2 string,
email3 string,
date1 string,
date2 string,
response string,
date3 string,
id2 string,
Account string
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES ('separatorChar' = ",",'quoteChar'= "\"", 'escapeChar' = "\\")
STORED AS TEXTFILE
LOCATION '/${directory}/loc1/loc2/loc3/';
Мой запрос на вставку sql находится здесь -
Insert overwrite table ${environment}folder2.sme
select
split(email,",")[0] as email
split(email,",")[1] as firstname
Если я не использую функцию разделения, все данные останутся в одном столбце. Если я использую функцию разделения, она работает нормально до нескольких первых столбцов и начинает ломаться, если точка данных находится в таком формате: «Мое имя, привет, привет». Я пробовал reg_exp, но не уверен, работает ли он так же, как и в других местах (например, в python). Любые предложения приветствуются. TIA
Я думаю, проблема в кавычках. можно ли их удалить перед загрузкой? И я думаю, что размещение данных в соответствующих столбцах лучше, чем использование
split
.