Hive에 테이블이 있는 경우, 파일로 저장하고 싶을때 ,
,
, NULL
처리를 쉘에서 처리하는게 좋다.
아래 sql
에 내가 원하고자 하는 쿼리를 입력하면 테이블을 로컬로 가져올 수 있음
import sys
import time
import datetime
import os
import logging
try:
from subprocess import getstatusoutput
except ImportError:
from commands import getstatusoutput
import argparse
logger = None
def get_data(args):
if not os.path.exists(args.output_path):
os.makedirs(args.output_path)
output_path = os.path.join(args.output_path, 'data.txt')
cmd1 = """<sql> sed 's/,/ /g; s/NULL//g' > %s""" % (args.input_table, output_path)
print (cmd1)
print ("start getting train_data at %s" % datetime.datetime.now())
status, output = getstatusoutput(cmd1)
print ("status %s output %s" % (status, output))
if status == 0:
print("finished!")
print("finish getting train_data at %s" % datetime.datetime.now())
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument('--input_table', required=True)
parser.add_argument('--output_path', required=True)
# parser.add_argument('--mode', required=True, choices=["train", "pred"])
args, _ = parser.parse_known_args()
return args, parser
if __name__ == '__main__':
args, parser = parse_args()
print (args.output_path)
try:
get_data(args)
except Exception as e:
print (e)