Проверить паркет из командной строки
Как проверить содержимое файла паркета из командной строки?
единственный вариант, который я вижу сейчас-это
$ hadoop fs -get my-path local-file
$ parquet-tools head local-file | less
Я хочу
- избежать создания
local-file
и - просмотр содержимого файла как
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
посмотрите на результат, он говорит паркет не существует