__init__.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. #!/usr/bin/env /usr/bin/python3
  2. # -*- coding:utf-8 -*-
  3. import os
  4. import socket
  5. import sys
  6. import time
  7. import findspark
  8. def cow_says():
  9. os.system(f'source {PROJECT_ROOT_PATH}/bin/common/functions.sh')
  10. os.environ['HADOOP_CONF_DIR'] = '/etc/hadoop/conf'
  11. # os.environ['HIVE_CONF_DIR'] = '/etc/hive/conf'
  12. # os.environ['JAVA_HOME'] = '/usr/local/java'
  13. os.environ["PYSPARK_DRIVER_PYTHON"] = "/usr/bin/python3"
  14. os.environ["PYSPARK_PYTHON"] = "/usr/bin/python3"
  15. # os.environ['SPARK_HOME'] = '/usr/hdp/3.1.5.0-152/spark2'
  16. os.environ['PYTHONUNBUFFERED'] = 'x'
  17. PROJECT_ROOT_PATH = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
  18. PROJECT_NAME = os.path.basename(PROJECT_ROOT_PATH)
  19. sys.path.append(PROJECT_ROOT_PATH)
  20. # 公用的Spark UDF文件
  21. COMMON_SPARK_UDF_FILE = 'dw_base/spark/udf/spark_common_udf.py'
  22. BANNED_USER = 'root'
  23. RELEASE_USER = 'alvis'
  24. USER = os.environ['USER']
  25. HOME = os.environ['HOME']
  26. if USER == BANNED_USER and HOME.startswith('/home'):
  27. USER = os.path.basename(HOME)
  28. HOST = socket.gethostname()
  29. RELEASE_ROOT_DIR = '/home/alvis/release'
  30. if not PROJECT_ROOT_PATH.startswith(RELEASE_ROOT_DIR) or USER != RELEASE_USER:
  31. DO_RESET: str = '\033[0m'
  32. CHG_BOLD: str = '\033[1m'
  33. NORM_RED: str = '\033[0;31m'
  34. NORM_GRN: str = '\033[0;32m'
  35. NORM_YEL: str = '\033[0;33m'
  36. NORM_BLU: str = '\033[0;34m'
  37. NORM_MGT: str = '\033[0;35m'
  38. NORM_CYN: str = '\033[0;36m'
  39. NORM_WHT: str = '\033[0;37m'
  40. BOLD_RED: str = '\033[1;31m'
  41. BOLD_GRN: str = '\033[1;32m'
  42. BOLD_YEL: str = '\033[1;33m'
  43. BOLD_BLU: str = '\033[1;34m'
  44. BOLD_MGT: str = '\033[1;35m'
  45. BOLD_CYN: str = '\033[1;36m'
  46. BOLD_WHT: str = '\033[1;37m'
  47. BGRD_RED: str = '\033[41m'
  48. BGRD_GRN: str = '\033[42m'
  49. BGRD_YEL: str = '\033[43m'
  50. BGRD_BLU: str = '\033[44m'
  51. BGRD_MGT: str = '\033[45m'
  52. BGRD_CYN: str = '\033[46m'
  53. BGRD_WHT: str = '\033[47m'
  54. else:
  55. DO_RESET: str = ''
  56. CHG_BOLD: str = ''
  57. NORM_RED: str = ''
  58. NORM_GRN: str = ''
  59. NORM_YEL: str = ''
  60. NORM_BLU: str = ''
  61. NORM_MGT: str = ''
  62. NORM_CYN: str = ''
  63. NORM_WHT: str = ''
  64. BOLD_RED: str = ''
  65. BOLD_GRN: str = ''
  66. BOLD_YEL: str = ''
  67. BOLD_BLU: str = ''
  68. BOLD_MGT: str = ''
  69. BOLD_CYN: str = ''
  70. BOLD_WHT: str = ''
  71. BGRD_RED: str = ''
  72. BGRD_GRN: str = ''
  73. BGRD_YEL: str = ''
  74. BGRD_BLU: str = ''
  75. BGRD_MGT: str = ''
  76. BGRD_CYN: str = ''
  77. BGRD_WHT: str = ''
  78. IS_RUN_BY_RELEASE_USER = False
  79. IS_RUN_BY_NORMAL_USER = False
  80. if USER == RELEASE_USER:
  81. LOG_ROOT_DIR = "/opt/data/log"
  82. IS_RUN_BY_RELEASE_USER = True
  83. elif USER == BANNED_USER:
  84. ERROR_CODE = 18
  85. print(f'{NORM_MGT}{time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())} '
  86. f'{NORM_RED}Project {NORM_GRN}{PROJECT_NAME} '
  87. f'{NORM_RED}is running by banned user {NORM_GRN}{BANNED_USER}'
  88. f'{NORM_RED}, exit with error code {NORM_GRN}{ERROR_CODE}'
  89. f'{DO_RESET}')
  90. exit(ERROR_CODE)
  91. else:
  92. IS_RUN_BY_NORMAL_USER = True
  93. LOG_ROOT_DIR = f'{HOME}/data/log'
  94. cow_says()
  95. print(f'{NORM_CYN}{time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())} '
  96. f'{NORM_MGT}Project {NORM_GRN}{PROJECT_NAME} '
  97. f'{NORM_MGT}is running in normal user {NORM_GRN}{USER}')
  98. if PROJECT_ROOT_PATH.startswith(f'{RELEASE_ROOT_DIR}/{PROJECT_NAME}'):
  99. IS_RUN_IN_RELEASE_DIR = True
  100. print(f'{NORM_CYN}{time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())} '
  101. f'{NORM_MGT}Project {NORM_GRN}{PROJECT_NAME} '
  102. f'{NORM_MGT}is running in release dir {NORM_GRN}{RELEASE_ROOT_DIR}/{PROJECT_NAME}')
  103. else:
  104. IS_RUN_IN_RELEASE_DIR = False
  105. print(f'{NORM_CYN}{time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())} '
  106. f'{NORM_MGT}Project {NORM_GRN}{PROJECT_NAME} '
  107. f'{NORM_MGT}is running in normal user dir {NORM_GRN}{PROJECT_ROOT_PATH}')
  108. if not IS_RUN_IN_RELEASE_DIR or USER != RELEASE_USER:
  109. os.system(f'echo -en "{NORM_GRN}"')
  110. os.system(f'echo -en "{DO_RESET}"')
  111. findspark.init()