Я пытаюсь загрузить csv с разделителем каналов во внешнюю таблицу улья. Значения данных содержат одинарные кавычки, двойные кавычки, скобки и т. Д. Использование Open CSV версии 2.3
testfile.csv
id|name|phone
1|Rahul|123
2|Kumar's|456
3|Neetu"s|789
4|Ravi [Roma]|234
Таблица создана как -
drop table test_schema.hive_test;
CREATE EXTERNAL TABLE test_schema.hive_test (id string, name string, phone string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES
(
'separatorChar' = '|',
'quoteChar' = '[\'\"]',
'escapeChar' = '\\'
)
LOCATION '/staging/test/hive'
tblproperties ("skip.header.line.count"="1");
Вывод -
+-------------+---------------+----------------+
| hive_test.id|hive_test.name |hive_test.phone |
+-------------+---------------+----------------+
| 1 | Rahul |123 |
| 2 | Kumar's |456 |
| 3 | Neetu"s |789 |
| 4 | NULL |234 |
+---------------+------------------------------+
Ожидаемый результат -
+-------------+---------------+----------------+
| hive_test.id|hive_test.name |hive_test.phone |
+-------------+---------------+----------------+
| 1 | Rahul |123 |
| 2 | Kumar's |456 |
| 3 | Neetu"s |789 |
| 4 | Ravi [Roma] |234 |
+---------------+------------------------------+
Проблема в том, что у нас есть несколько символов escape-последовательностей / кавычек в данных, и, следовательно, нам нужно включить их все.