Ошибка запроса Афины с выбранными, имеющими специальные символы - PullRequest
0 голосов
/ 04 июля 2019

Ниже приведен запрос выбора, который я пытаюсь выполнить:

SELECT * from test WHERE doc = '/folder1/folder2-path/testfile.txt';

Этот запрос возвращает ноль результатов.

Если я изменяю запрос с помощью like, он работает без специальных символов /-.

SELECT * from test WHERE doc LIKE '%folder1%folder2%path%testfile%txt';

Это работает

Как я могу исправить этот запрос для использования оператора eq или IN, так как мне интересно запустить пакетный выбор?

1 Ответ

0 голосов
/ 04 июля 2019

Чтобы проверить вашу ситуацию, я создал текстовый файл, содержащий:

hello
there
/folder1/folder2-path/testfile.txt
this/that
here.there

Я загрузил файл в каталог на S3, затем создал внешнюю таблицу в Афине:

CREATE EXTERNAL TABLE stack (doc string) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
WITH SERDEPROPERTIES ("separatorChar" = ",", "escapeChar" = "\\") 
LOCATION 's3://my-bucket/my-folder/'

Затем я выполнил команду:

select * from stack WHERE doc = '/folder1/folder2-path/testfile.txt'

Возвращено:

1   /folder1/folder2-path/testfile.txt

Итак, это сработало для меня. Следовательно, ваша проблема может быть связана с содержимым файла или с тем, как определяется внешняя таблица (например, с использованием другого Serde).

...