コード例 #1
0
def merge_pre_hi_data_task(hive_db, hive_all_hi_table_name, hive_hi_table_name,
                           is_must_have_data, pt, now_hour, pre_hour_day,
                           pre_hour, **kwargs):
    sqoopSchema = SqoopSchemaUpdate()
    hive_columns = sqoopSchema.get_hive_column_name(hive_db,
                                                    hive_all_hi_table_name)

    hql = ADD_HI_SQL.format(db_name=hive_db,
                            hive_all_hi_table_name=hive_all_hi_table_name,
                            hive_hi_table_name=hive_hi_table_name,
                            pt=pt,
                            now_hour=now_hour,
                            pre_hour_day=pre_hour_day,
                            pre_hour=pre_hour,
                            columns=',\n'.join(hive_columns))

    hive_hook = HiveCliHook()

    # 读取sql

    logging.info('Executing: %s', hql)

    # 执行Hive
    hive_hook.run_cli(hql)

    # 生成_SUCCESS
    """
    第一个参数true: 数据目录是有country_code分区。false 没有
    第二个参数true: 数据有才生成_SUCCESS false 数据没有也生成_SUCCESS 

    """
    TaskTouchzSuccess().countries_touchz_success(
        pt, hive_db, hive_all_hi_table_name,
        ALL_HI_OSS_PATH % hive_all_hi_table_name, "false", is_must_have_data,
        now_hour)
コード例 #2
0
def merge_pre_hi_with_full_data_task(hive_db, hive_h_his_table_name,
                                     hive_hi_table_name, mysql_db_name,
                                     mysql_table_name, mysql_conn,
                                     sqoop_temp_db_name, sqoop_table_name, pt,
                                     now_hour, pre_day, pre_hour_day, pre_hour,
                                     is_must_have_data, **kwargs):
    sqoopSchema = SqoopSchemaUpdate()

    hive_columns = sqoopSchema.get_hive_column_name(hive_db,
                                                    hive_h_his_table_name)
    mysql_columns = sqoopSchema.get_mysql_column_name(mysql_db_name,
                                                      mysql_table_name,
                                                      mysql_conn)
    pre_day_ms = int(time.mktime(time.strptime(pre_day, "%Y-%m-%d"))) * 1000

    hql = MERGE_HI_WITH_FULL_SQL.format(
        columns=',\n'.join(hive_columns),
        pt=pt,
        now_hour=now_hour,
        db_name=hive_db,
        mysql_db_name=mysql_db_name,
        hive_h_his_table_name=hive_h_his_table_name,
        hive_hi_table_name=hive_hi_table_name,
        mysql_table_name=mysql_table_name,
        pre_day_ms=pre_day_ms,
        mysql_columns=',\n'.join(mysql_columns),
        sqoop_temp_db_name=sqoop_temp_db_name,
        sqoop_table_name=sqoop_table_name)

    hive_hook = HiveCliHook()

    # 读取sql
    logging.info('Executing: %s', hql)

    # 执行Hive
    hive_hook.run_cli(hql)

    # 生成_SUCCESS
    """
    第一个参数true: 数据目录是有country_code分区。false 没有
    第二个参数true: 数据有才生成_SUCCESS false 数据没有也生成_SUCCESS 

    """
    TaskTouchzSuccess().countries_touchz_success(
        pt, hive_db, hive_h_his_table_name,
        H_HIS_OSS_PATH % hive_h_his_table_name, "false", is_must_have_data,
        now_hour)