def METHOD_NAME():
    ctx: CylonContext = CylonContext(config=None, distributed=False)
    csv_read_options = CSVReadOptions().use_threads(True).block_size(1 << 30)
    table1_path = 'data/input/user_device_tm_1.csv'
    table2_path = 'data/input/user_usage_tm_1.csv'
    assert os.path.exists(table1_path) and os.path.exists(table2_path)
    tb1: Table = read_csv(ctx, table1_path, csv_read_options)
    tb2: Table = read_csv(ctx, table2_path, csv_read_options)
    configs = {'join_type': 'inner', 'algorithm': 'sort'}
    tb3: Table = tb1.join(table=tb2,
                          join_type=configs['join_type'],
                          algorithm=configs['algorithm'],
                          left_on=[0],
                          right_on=[3]
                          )
    print(tb3.row_count, tb3.column_count)
    tb4: Table = tb1.join(table=tb2,
                          join_type=configs['join_type'],
                          algorithm=configs['algorithm'],
                          left_on=['use_id'],
                          right_on=['use_id']
                          )
    tb5: Table = tb1.join(table=tb2,
                          join_type=configs['join_type'],
                          algorithm=configs['algorithm'],
                          on=['use_id']
                          )
    assert tb3.row_count == tb4.row_count == tb5.row_count and tb3.column_count == \
           tb4.column_count == tb5.column_count
    ctx.finalize()