Поддерживает ли Apache Drill более одного символа в качестве разделителя? - PullRequest
1 голос
/ 20 марта 2019

У меня есть файл, в котором в качестве разделителя используется двойной канал вместо запятой или одного канала.

07||1||60||51111288||470||12647767||-1||0||-1||6||||77039144||-1||||||||||||||||||||||61807||||-1||1899-12-30 00:00:00.000||0||39||2019-03-07 17:15:56.000||1899-12-30 00:00:00.000||2019-03-07 17:23:35.000||0||0||0||-1578673||107||-1||-1||1||1||-1||-1||3||.000000||.000000||.000000||-1||.000000||-1||.000000||-1||.000000||.000000||2019-03-07 17:23:35.000||-1||-1||-1||-1||-1||-1||||||||-1||||||-1||||||1978955,2

Хотел узнать, как настроить хранилище в Apache Drill, чтобы оно могло обрабатывать двойную трубу.

"formats": {
    "csv": {
      "type": "text",
      "extensions": [
        "csv",
        "CSV"
      ],
      "delimiter": "||"
    }

Если я даю двойную трубу, выдается ошибка: Please retry: error (invalid JSON mapping)

Согласно этой статье https://drill.apache.org/blog/2015/12/14/drill-1.4-released/ a linedelimiter может иметь двойной символ, но для delimiter

ничего не упоминается

1 Ответ

1 голос
/ 26 марта 2019

В настоящее время тип java byte используется для установки разделителя .Вот почему там невозможно хранить несколько символов, вы получите ошибку сериализации Джексона (включите журнал уровня отладки, чтобы выяснить это из журналов).

com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `char` out of VALUE_STRING token
 at [Source: (StringReader); line: 25, column: 20] (through reference chain: org.apache.drill.exec.store.dfs.FileSystemConfig["formats"]->java.util.LinkedHashMap["psv"]->org.apache.drill.exec.store.easy.text.TextFormatPlugin$TextFormatConfig["delimiter"])
    at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:63) ~[jackson-databind-2.9.5.jar:2.9.5]
    at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1342) ~[jackson-databind-2.9.5.jar:2.9.5]
    at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1138) ~[jackson-databind-2.9.5.jar:2.9.5]
...

Возможно, это можно лучше документировать.Но, как по мне, это должно быть улучшено, так что не стесняйтесь создавать билет Jira для этой проблемы.

...