PXF FAQ

В этом документе приведены часто задаваемые вопросы, связанные с PXF.


1 remote component error, Failed connect to localhost:5888; Connection refused (libchurl.c:950)


После развертывания PXF при попытке доступа к HDFS возникает ошибка:

remote component error,Failed connect to localhost:5888; Connection refused (libchurl.c:950)

Решение

  1. Способ доступа PXF к файлам требует, чтобы сервер PXF был включен на узле Master, однако файл данных должен находиться на сегменте PXF.

  2. pxf/servers/core-site.xml and hdfs-site.xml должен совпадать с файлом конфигурации Hadoop.

  3. pxf/servers/core-site.xml настраивает права доступа пользователя.

  4. Имя пользователя и группа файла на Hadoop должны совпадать с указанным pxf/core-site.xml.


2 При загрузке файла в базу данных одно из полей содержит символ новой строки. Это приводит к разбиению одной строки данных на две, а затем к разделению по разделителю, что вызывает несоответствие количества полей. То есть в одной строке данных есть два символа \n: один — в середине, другой — в конце, но серединный символ нельзя интерпретировать как символ новой строки.


Решение

  1. Добавьте escape 'off' в параметры.

  2. Используйте format 'text:multi'.


3 Может ли PXF рекурсивно получить доступ ко всем файлам в текущем каталоге и всех подкаталогах S3?


Да.

Предварительные условия

PXF может нормально обращаться к S3.

Решение

Скопируйте файл aa.csv, переименуйте его в ab.csv и загрузите в бакет. Путь к файлу: ymatrix/test. В настоящее время файлы ymatrix/test содержат aa.csv и ab.csv. Количество датасетов в ymatrix/test составляет 1000.

  1. Создайте внешнюю таблицу:
    DROP FOREIGN TABLE public.chen_test ;
    CREATE FOREIGN TABLE public.chen_test (
     c1 text,
     c2 text,
     c3 text
    )
    SERVER s3server_online
    OPTIONS (
     format 'csv',
     resource 'ymatrix/test/a*.csv',
       JSONIFY_ARRAY 'TRUE',
       JSONIFY_MAP 'TRUE',
       JSONIFY_RECORD 'TRUE'
    );
  2. Проверьте количество датасетов:
    SELECT count(*) FROM chen_test ;
    count 
    -------
    2000
    (1 row)

    Используйте подстановочный знак * для рекурсивного получения всех файлов во всех подкаталогах указанного каталога.

Примечание! Формат файлов, соответствующих подстановочным знакам, должен быть одинаковым; в противном случае будет выдана ошибка.


4 Может ли PXF читать файлы на хранилище S3? Как это сделать?


Да.

Когда файлы в форматах TEXT, CSV, PARQUET и JSON автоматически разбиваются на сегменты размером 128MB, соответствующие сегменты читают их параллельно.