__main__.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import argparse
  2. import logging
  3. import sys
  4. def setup_logging(options=None):
  5. level = logging.DEBUG if options is not None and options.debug \
  6. else logging.WARNING
  7. console = logging.StreamHandler()
  8. console.setLevel(level)
  9. formatter = logging.Formatter('%(name)s: %(levelname)-8s %(message)s')
  10. console.setFormatter(formatter)
  11. logging.getLogger('parquet').addHandler(console)
  12. def main(argv=None):
  13. argv = argv or sys.argv[1:]
  14. parser = argparse.ArgumentParser('parquet',
  15. description='Read parquet files')
  16. parser.add_argument('--metadata', action='store_true',
  17. help='show metadata on file')
  18. parser.add_argument('--row-group-metadata', action='store_true',
  19. help="show per row group metadata")
  20. parser.add_argument('--no-data', action='store_true',
  21. help="don't dump any data from the file")
  22. parser.add_argument('--limit', action='store', type=int, default=-1,
  23. help='max records to output')
  24. parser.add_argument('--col', action='append', type=str,
  25. help='only include this column (can be '
  26. 'specified multiple times)')
  27. parser.add_argument('--no-headers', action='store_true',
  28. help='skip headers in output (only applies if '
  29. 'format=csv)')
  30. parser.add_argument('--format', action='store', type=str, default='csv',
  31. help='format for the output data. can be csv or json.')
  32. parser.add_argument('--debug', action='store_true',
  33. help='log debug info to stderr')
  34. parser.add_argument('file',
  35. help='path to the file to parse')
  36. args = parser.parse_args(argv)
  37. setup_logging(args)
  38. import parquet
  39. if args.metadata:
  40. parquet.dump_metadata(args.file, args.row_group_metadata)
  41. if not args.no_data:
  42. parquet.dump(args.file, args)
  43. if __name__ == '__main__':
  44. main()