Apache Drill: как запросить файл Parquet и вывести результат в файл CSV

Вот ситуация, с которой я столкнулся.

Окружающая среда: Настольная ОС: Windows 7 Установленный Apache Drill

set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_111
sqlline.bat -u "jdbc:drill:zk=local"

Получил подсказку Drill

0: jdbc:drill:zk=local> !set outputformat csv
0: jdbc:drill:zk=local> !record "C:\Input\CSV\test_CSV.csv"
0: jdbc:drill:zk=local> select * from dfs.`C:\Input\CSV\test_Parquet.parquet` limit 1;
0: jdbc:drill:zk=local> !record

Выход

Saving all output to "C:\Input\CSV\test_CSV.csv". Enter "record" with no arguments to stop it.
'field1','field2','field3','field4','field5','field6'
'B','9876','54321','123','KOHL'S CORPORATION, MEN','BOOK'

What I would like:

  • Values to be enclosed in double-quotes as opposed to single-quote
  • Tried !set outputformat txt as well even then the values are in double-quotes

    Я читал, что есть и другие способы конвертировать файл паркета в csv, но мне любопытно узнать, как это сделать с помощью Apache Drill.


  • person Keshav Prabhu    schedule 02.10.2018    source источник
    comment
    Итак, все значения должны быть заключены в двойные кавычки?   -  person hrbrmstr    schedule 06.10.2018


    Ответы (2)


    Apache Drill может создавать файлы CSV с помощью команды CTAS [1]. Формат вывода по умолчанию - паркет, поэтому вам придется изменить его, используя store.format параметр сеанса [2], но я сомневаюсь, что это поможет решить вашу проблему с помощью двойных кавычек.

    [1] https://drill.apache.org/docs/create-table-as-ctas/

    [2] https://drill.apache.org/docs/create-table-as-ctas/#alter-session-command.

    person Arina Yelchiyeva    schedule 03.10.2018

    Чтобы хранить данные в двойных кавычках с помощью SqlLine, вам необходимо указать символ кавычки csv перед записью:

    !set csvquotecharacter '"'
    
    person Arina Yelchiyeva    schedule 04.10.2018
    comment
    Спасибо, попробую. - person Keshav Prabhu; 04.10.2018
    comment
    Выдает мне исключение 0: jdbc: Drill: zk = local ›! Set csvquotecharacter '' java.lang.StringIndexOutOfBoundsException: индекс строки вне диапазона: -1 в java.lang.String.substring (String.java:1967) в sqlline .SqlLine.dequote (SqlLine.java:1270) в sqlline.SqlLine.split (SqlLine.java:1283) в sqlline.SqlLine.split (SqlLine.java:1102) в sqlline.AbstractCommandHandler.Handler.matches (AbstractCommandHandler.matches) в sqlline.SqlLine.dispatch (SqlLine.java:725) в sqlline.SqlLine.begin (SqlLine.java:621) ... - person Keshav Prabhu; 04.10.2018
    comment
    Похоже, это ошибка в SqlLine. Apache Drill 1.14.0 не использует последнюю версию SqlLine, но Apache Drill 1.15.0 будет. Вы можете собрать Apache Drill из мастера (1.15.0-SNAPSHOT), который использует последнюю версию SqlLine 1.5.0. - person Arina Yelchiyeva; 07.10.2018
    comment
    Да, у нас установлена ​​Drill 1.12.0. Я обновлюсь до 1.15 и надеюсь заставить его работать. - person Keshav Prabhu; 13.10.2018
    comment
    Релиз Apache Drill 1.15 запланирован на конец ноября. Между тем, вы можете собрать версию SNAPSHOT из исходников. - person Arina Yelchiyeva; 15.10.2018
    comment
    Нам не разрешено использовать SNAPSHOTs (ограничения на рабочем месте :(). Подожду релиза. - person Keshav Prabhu; 24.10.2018
    comment
    Я установил последнюю версию SNAPSHOT сегодня, построил последнюю основную версию из Github, обновленную до 5 ноября 2018 г., и, несмотря на то, что использование !set csvquotecharacter '"' не вызывает никаких ошибок, вывод CSV все еще анализируется без кавычек - person Mariano Ruiz; 09.11.2018
    comment
    ???? Я сообщил об ошибке csvquotecharacter здесь: issues.apache.org/jira/browse/DRILL- 6840 - person Mariano Ruiz; 09.11.2018
    comment
    В Jira объяснили, как выводить цитируемый CSV через SqlLine. - person Arina Yelchiyeva; 09.11.2018