1-й и 3-й вопрос похожи - почему двойные кавычки не удаляются?
Это потому, что SerDe не используется при вставке данных непосредственно в таблицу.SerDe означает Serializer / Deserializer, а Hive использует его для чтения / записи строк таблицы из / в файл.
HDFS файлы -> InputFileFormat -> -> Deserializer -> Row object
Объект Row -> Serializer -> -> OutputFileFormat -> HDFS файлы
Попробуйте вставить данные в таблицу кустов с помощью команды load, и вы увидите, что она работает.
load data local inpath '/home/hive/test/test.csv' into table serdetest;
Пример - test.csv
"AKHIL",Engineer,Male
Для получения более подробной информации, пожалуйста, посетите страницу Hive Wiki .
2-й вопрос - Как избежать нескольких символов кавычки?
Это можно сделать с помощью ' RegexSerDe '.
CREATE EXTERNAL TABLE serdetest (Name varchar(50),Job varchar(50),Gender
varchar(6))
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
'input.regex' = '^\"(\\d+)\\W+\\W+(\\w+).*'
)
STORED AS TEXTFILE
location "/user/pathirippilly/hive_data_external/serdeTest";
Примечание. Например, приведенное в утверждении регулярное выражение не соответствует действительности.
Надеюсь, это поможет!