Проверить паркет из командной строки

Как проверить содержимое файла паркета из командной строки?

единственный вариант, который я вижу сейчас-это

$ hadoop fs -get my-path local-file
$ parquet-tools head local-file | less

Я хочу

  1. избежать создания local-file и
  2. просмотр содержимого файла как json а не типизации текста, что parquet-tools печать.

есть ли простой способ?

5 ответов


Я рекомендую просто строить и запускать паркетные инструменты.банка для вашего распределения Hadoop.

проверка проекта github:https://github.com/Parquet/parquet-mr/tree/master/parquet-tools

hadoop jar ./parquet-tools-<VERSION>.jar <command>.


можно использовать parquet-tools С помощью команды cat и --json опция для просмотра файлов без локальной копии и в формате JSON.

вот пример:

parquet-tools cat --json  hdfs://localhost/tmp/save/part-r-00000-6a3ccfae-5eb9-4a88-8ce8-b11b2644d5de.gz.parquet

это выводит данные в формате JSON:

{"name":"gil","age":48,"city":"london"}
{"name":"jane","age":30,"city":"new york"}
{"name":"jordan","age":18,"city":"toronto"}

отказ от ответственности: это было протестировано в Cloudera CDH 5.12.0


по умолчанию паркет-инструменты В общем будет искать локальный каталог файлов, поэтому, чтобы указать его на hdfs, нам нужно добавить hdfs:/ / в начале пути к файлу. Так что в вашем случае, вы можете сделать что-то подобное

parquet-tools head hdfs://localhost/<hdfs-path> | less

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


Я бы предпочел использовать HDFS NFS Gateway + autofs для легкого исследования файлов hdfs.

Мои настройки:

  • служба шлюза HDFS NFS работает на namenode.
  • дистрибутив в комплекте autofs service on. с последующим изменением конфигурации авто.мастер!--8-->
/net    -hosts nobind

Я могу легко запустить следующую команду, чтобы исследовать любой файл hdfs

head /net/<namenodeIP>/path/to/hdfs/file
parquet-tools head /net/<namenodeIP>/path/to/hdfs/par-file
rsync -rv /local/directory/ /net/<namenodeIP>/path/to/hdfs/parentdir/

забудьте о команде hadoop * hdfs*;)


Я на 5.11 и вижу, что есть паркетные инструменты, однако я подозреваю, что инструмент работает: У меня есть файл паркета, как показано ниже:

-rwxrwx--x+  3 hive hive       1096 2018-08-20 12:51 /user/hive/warehouse/pnc_loans_v2/loans_customer_merge_v3_rxie_test/loans_customer_merge_v3_rxie_test180820/part-r-00000-05844bcb-ee00-473a-8eff-ad6a217b4d4c.snappy.parquet

Я запускаю инструмент, как показано ниже, чтобы, надеюсь, узнать, содержит ли паркет что-нибудь или ничего:

 parquet-tools cat --json /user/hive/warehouse/pnc_loans_v2/loans_customer_merge_v3_rxie_test/loans_customer_merge_v3_rxie_test180820/part-r-00000-05844bcb-ee00-473a-8eff-ad6a217b4d4c.snappy.parquet
File /user/hive/warehouse/pnc_loans_v2/loans_customer_merge_v3_rxie_test/loans_customer_merge_v3_rxie_test180820/part-r-00000-05844bcb-ee00-473a-8eff-ad6a217b4d4c.snappy.parquet does not exist

посмотрите на результат, он говорит паркет не существует