Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] Databricks 10.4 aggregations can fail when partially replaced #4963

Closed
jlowe opened this issue Mar 16, 2022 · 1 comment
Closed

[BUG] Databricks 10.4 aggregations can fail when partially replaced #4963

jlowe opened this issue Mar 16, 2022 · 1 comment
Labels
bug Something isn't working P1 Nice to have for release

Comments

@jlowe
Copy link
Member

jlowe commented Mar 16, 2022

While implementing the shim for Databricks 10.4, I encountered test failures when hash aggregates were only partially replaced and contained counts and distinct counts. It appears Databricks 10.4 is using a different intermediate buffer layout and intermediate values are not aligning properly between the GPU and CPU aggregation halves. An example failure (note that I modified test_hash_multiple_mode_query to minimize the repro case with respect to aggregations being used):

_ test_hash_multiple_mode_query[{'spark.rapids.sql.variableFloatAgg.enabled': 'true', 'spark.rapids.sql.hasNans': 'false', 'spark.rapids.sql.castStringToFloat.enabled': 'true', 'spark.rapids.sql.hashAgg.replaceMode': 'partial'}-[('a', Long(not_null)), ('b', Integer(not_null)), ('c', Long(not_null))]] _
[gw1] linux -- Python 3.8.10 /databricks/python3/bin/python

data_gen = [('a', Long(not_null)), ('b', Integer(not_null)), ('c', Long(not_null))]
conf = {'spark.rapids.sql.castStringToFloat.enabled': 'true', 'spark.rapids.sql.hasNans': 'false', 'spark.rapids.sql.hashAgg.replaceMode': 'partial', 'spark.rapids.sql.variableFloatAgg.enabled': 'true'}

    @approximate_float
    @ignore_order
    @incompat
    @pytest.mark.parametrize('data_gen', [_longs_with_no_nulls], ids=idfn)
    @pytest.mark.parametrize('conf', get_params([_no_nans_float_conf_partial], params_markers_for_confs), ids=idfn)
    def test_hash_multiple_mode_query(data_gen, conf):
        print_params(data_gen)
        def doit(spark):
            df = gen_df(spark, data_gen, length=100)\
                .groupby('a')\
                .agg(f.count('a'),
    #                 f.avg('b'),
    #                 f.avg('a'),
                     f.countDistinct('b'),
    #                 f.sum('a'),
    #                 f.min('a'),
    #                 f.max('a'),
    #                 f.sumDistinct('b'),
                     f.countDistinct('c')
                    )
            print("PLAN:", df.explain())
            return df
>       assert_gpu_and_cpu_are_equal_collect(doit, conf=conf)

../../src/main/python/hash_aggregate_test.py:861: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../src/main/python/asserts.py:508: in assert_gpu_and_cpu_are_equal_collect
    _assert_gpu_and_cpu_are_equal(func, 'COLLECT', conf=conf, is_cpu_first=is_cpu_first)
../../src/main/python/asserts.py:439: in _assert_gpu_and_cpu_are_equal
    assert_equal(from_cpu, from_gpu)
../../src/main/python/asserts.py:106: in assert_equal
    _assert_equal(cpu, gpu, float_check=get_float_check(), path=[])
../../src/main/python/asserts.py:42: in _assert_equal
    _assert_equal(cpu[index], gpu[index], float_check, path + [index])
../../src/main/python/asserts.py:35: in _assert_equal
    _assert_equal(cpu[field], gpu[field], float_check, path + [field])
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cpu = 1, gpu = 0, float_check = <function get_float_check.<locals>.<lambda> at 0x7ffac6c10ca0>, path = [44, 'count(a)']

    def _assert_equal(cpu, gpu, float_check, path):
        t = type(cpu)
        if (t is Row):
            assert len(cpu) == len(gpu), "CPU and GPU row have different lengths at {} CPU: {} GPU: {}".format(path, len(cpu), len(gpu))
            if hasattr(cpu, "__fields__") and hasattr(gpu, "__fields__"):
                assert cpu.__fields__ == gpu.__fields__, "CPU and GPU row have different fields at {} CPU: {} GPU: {}".format(path, cpu.__fields__, gpu.__fields__)
                for field in cpu.__fields__:
                    _assert_equal(cpu[field], gpu[field], float_check, path + [field])
            else:
                for index in range(len(cpu)):
                    _assert_equal(cpu[index], gpu[index], float_check, path + [index])
        elif (t is list):
            assert len(cpu) == len(gpu), "CPU and GPU list have different lengths at {} CPU: {} GPU: {}".format(path, len(cpu), len(gpu))
            for index in range(len(cpu)):
                _assert_equal(cpu[index], gpu[index], float_check, path + [index])
        elif (t is tuple):
            assert len(cpu) == len(gpu), "CPU and GPU list have different lengths at {} CPU: {} GPU: {}".format(path, len(cpu), len(gpu))
            for index in range(len(cpu)):
                _assert_equal(cpu[index], gpu[index], float_check, path + [index])
        elif (t is pytypes.GeneratorType):
            index = 0
            # generator has no zip :( so we have to do this the hard way
            done = False
            while not done:
                sub_cpu = None
                sub_gpu = None
                try:
                    sub_cpu = next(cpu)
                except StopIteration:
                    done = True
    
                try:
                    sub_gpu = next(gpu)
                except StopIteration:
                    done = True
    
                if done:
                    assert sub_cpu == sub_gpu and sub_cpu == None, "CPU and GPU generators have different lengths at {}".format(path)
                else:
                    _assert_equal(sub_cpu, sub_gpu, float_check, path + [index])
    
                index = index + 1
        elif (t is dict):
            # The order of key/values is not guaranteed in python dicts, nor are they guaranteed by Spark
            # so sort the items to do our best with ignoring the order of dicts
            cpu_items = list(cpu.items()).sort(key=_RowCmp)
            gpu_items = list(gpu.items()).sort(key=_RowCmp)
            _assert_equal(cpu_items, gpu_items, float_check, path + ["map"])
        elif (t is int):
>           assert cpu == gpu, "GPU and CPU int values are different at {}".format(path)
E           AssertionError: GPU and CPU int values are different at [44, 'count(a)']

../../src/main/python/asserts.py:77: AssertionError
------------------------------------------------------------------------------ Captured stdout call ------------------------------------------------------------------------------
Test Datagen Params=[('a', 'DataType: LongType, nullable: False, special_cases: [-9223372036854775808, 9223372036854775807, 0, 1, -1]'), ('b', 'DataType: IntegerType, nullable: False, special_cases: [-2147483648, 2147483647, 0, 1, -1]'), ('c', 'DataType: LongType, nullable: False, special_cases: [-9223372036854775808, 9223372036854775807, 0, 1, -1]')]
### CPU RUN ###
== Physical Plan ==
*(3) HashAggregate(keys=[a#0L], functions=[finalmerge_first(merge first#28L, valueSet#29) AS first(count(1)#22L) ignore nulls#23L, finalmerge_count(merge count#31L) AS count(b#20)#13L, finalmerge_count(merge count#33L) AS count(c#21L)#14L])
+- Exchange hashpartitioning(a#0L, 4), ENSURE_REQUIREMENTS, [id=#125]
   +- HashAggregate(keys=[a#0L], functions=[partial_first(count(1)#22L, true) AS (first#28L, valueSet#29) FILTER (WHERE (gid#19 = 0)), partial_count(b#20) AS count#31L FILTER (WHERE (gid#19 = 1)), partial_count(c#21L) AS count#33L FILTER (WHERE (gid#19 = 2))])
      +- *(2) HashAggregate(keys=[a#0L, b#20, c#21L, gid#19], functions=[finalmerge_count(merge count#25L) AS count(1)#9L])
         +- Exchange hashpartitioning(a#0L, b#20, c#21L, gid#19, 4), ENSURE_REQUIREMENTS, [id=#120]
            +- *(1) HashAggregate(keys=[a#0L, b#20, c#21L, gid#19], functions=[partial_count(1) AS count#25L])
               +- *(1) Expand [[a#0L, null, null, 0], [a#0L, b#1, null, 1], [a#0L, null, c#2L, 2]], [a#0L, b#20, c#21L, gid#19]
                  +- *(1) Scan ExistingRDD[a#0L,b#1,c#2L]


PLAN: None
### GPU RUN ###
== Physical Plan ==
*(3) HashAggregate(keys=[a#121L], functions=[finalmerge_first(merge first#149L, valueSet#150) AS first(count(1)#143L) ignore nulls#144L, finalmerge_count(merge count#152L) AS count(b#141)#134L, finalmerge_count(merge count#154L) AS count(c#142L)#135L])
+- GpuColumnarToRow false
   +- GpuShuffleCoalesce 104857600
      +- GpuColumnarExchange gpuhashpartitioning(a#121L, 4), ENSURE_REQUIREMENTS, [id=#520]
         +- GpuHashAggregate(keys=[a#121L], functions=[partial_gpufirst(count(1)#143L, true), partial_gpucount(b#141), partial_gpucount(c#142L)]), filters=ArrayBuffer(Some((gid#140 = 0)), Some((gid#140 = 1)), Some((gid#140 = 2))))
            +- GpuRowToColumnar targetsize(104857600)
               +- *(2) HashAggregate(keys=[a#121L, b#141, c#142L, gid#140], functions=[finalmerge_count(merge count#146L) AS count(1)#130L])
                  +- GpuColumnarToRow false
                     +- GpuShuffleCoalesce 104857600
                        +- GpuColumnarExchange gpuhashpartitioning(a#121L, b#141, c#142L, gid#140, 4), ENSURE_REQUIREMENTS, [id=#512]
                           +- GpuHashAggregate(keys=[a#121L, b#141, c#142L, gid#140], functions=[partial_gpucount(1)]), filters=ArrayBuffer(None))
                              +- GpuExpand [[a#121L, null, null, 0], [a#121L, b#122, null, 1], [a#121L, null, c#123L, 2]], [a#121L, b#141, c#142L, gid#140]
                                 +- GpuRowToColumnar targetsize(104857600)
                                    +- *(1) Scan ExistingRDD[a#121L,b#122,c#123L]


PLAN: None
### COLLECT: GPU TOOK 4.15294623374939 CPU TOOK 10.877075672149658 ###
CPU OUTPUT: [Row(a=-9223372036854775808, count(a)=2, count(b)=2, count(c)=2), Row(a=-8993871743395121636, count(a)=1, count(b)=1, count(c)=1), Row(a=-8824564747028895090, count(a)=1, count(b)=1, count(c)=1), Row(a=-8360439097461740684, count(a)=1, count(b)=1, count(c)=1), Row(a=-8119367677816790003, count(a)=1, count(b)=1, count(c)=1), Row(a=-8095240098983490059, count(a)=1, count(b)=1, count(c)=1), Row(a=-8074900563395293024, count(a)=1, count(b)=1, count(c)=1), Row(a=-7916182562340764963, count(a)=1, count(b)=1, count(c)=1), Row(a=-7644040328848254512, count(a)=1, count(b)=1, count(c)=1), Row(a=-7551557475767929245, count(a)=1, count(b)=1, count(c)=1), Row(a=-7419569242595387455, count(a)=1, count(b)=1, count(c)=1), Row(a=-7130683010620631203, count(a)=1, count(b)=1, count(c)=1), Row(a=-7029864373143088702, count(a)=1, count(b)=1, count(c)=1), Row(a=-6726790004526438438, count(a)=1, count(b)=1, count(c)=1), Row(a=-6681175467107958668, count(a)=1, count(b)=1, count(c)=1), Row(a=-6669292098421320609, count(a)=1, count(b)=1, count(c)=1), Row(a=-6228871387240662005, count(a)=1, count(b)=1, count(c)=1), Row(a=-6150492885085058765, count(a)=1, count(b)=1, count(c)=1), Row(a=-6063156676697350017, count(a)=1, count(b)=1, count(c)=1), Row(a=-5696274501923937029, count(a)=1, count(b)=1, count(c)=1), Row(a=-5545906764439179960, count(a)=1, count(b)=1, count(c)=1), Row(a=-5249581929350276040, count(a)=1, count(b)=1, count(c)=1), Row(a=-5244152136580518692, count(a)=1, count(b)=1, count(c)=1), Row(a=-5147140527860197588, count(a)=1, count(b)=1, count(c)=1), Row(a=-5133656973475552689, count(a)=1, count(b)=1, count(c)=1), Row(a=-4634307270092053473, count(a)=1, count(b)=1, count(c)=1), Row(a=-4594481394522420980, count(a)=1, count(b)=1, count(c)=1), Row(a=-4563575260449999225, count(a)=1, count(b)=1, count(c)=1), Row(a=-4324222002682111580, count(a)=1, count(b)=1, count(c)=1), Row(a=-4320992407945189370, count(a)=1, count(b)=1, count(c)=1), Row(a=-3917032101531217289, count(a)=1, count(b)=1, count(c)=1), Row(a=-3879498789179448709, count(a)=1, count(b)=1, count(c)=1), Row(a=-3854271584414532784, count(a)=1, count(b)=1, count(c)=1), Row(a=-3786594002235441489, count(a)=1, count(b)=1, count(c)=1), Row(a=-3664974252843436884, count(a)=1, count(b)=1, count(c)=1), Row(a=-3502159106106506455, count(a)=1, count(b)=1, count(c)=1), Row(a=-3468876372831096612, count(a)=1, count(b)=1, count(c)=1), Row(a=-3416317927450743577, count(a)=1, count(b)=1, count(c)=1), Row(a=-3210768190877665201, count(a)=1, count(b)=1, count(c)=1), Row(a=-3191579259939627208, count(a)=1, count(b)=1, count(c)=1), Row(a=-2829936275809760174, count(a)=1, count(b)=1, count(c)=1), Row(a=-2828476488387110055, count(a)=1, count(b)=1, count(c)=1), Row(a=-2821373815087770381, count(a)=1, count(b)=1, count(c)=1), Row(a=-2720838936747632101, count(a)=1, count(b)=1, count(c)=1), Row(a=-2602749590540254350, count(a)=1, count(b)=1, count(c)=1), Row(a=-2006832105721144106, count(a)=1, count(b)=1, count(c)=1), Row(a=-1565992008335861162, count(a)=1, count(b)=1, count(c)=1), Row(a=-1522131656554370869, count(a)=1, count(b)=1, count(c)=1), Row(a=-1515104068702799781, count(a)=1, count(b)=1, count(c)=1), Row(a=-948363822265177572, count(a)=1, count(b)=1, count(c)=1), Row(a=-847663416274407371, count(a)=1, count(b)=1, count(c)=1), Row(a=-758486987975055276, count(a)=1, count(b)=1, count(c)=1), Row(a=-545444698343657872, count(a)=1, count(b)=1, count(c)=1), Row(a=-335231079646476073, count(a)=1, count(b)=1, count(c)=1), Row(a=-255208803392541585, count(a)=1, count(b)=1, count(c)=1), Row(a=-199240735297494389, count(a)=1, count(b)=1, count(c)=1), Row(a=-55529886861161874, count(a)=1, count(b)=1, count(c)=1), Row(a=-1, count(a)=1, count(b)=1, count(c)=1), Row(a=1, count(a)=1, count(b)=1, count(c)=1), Row(a=815999380670977075, count(a)=1, count(b)=1, count(c)=1), Row(a=958747012124550583, count(a)=1, count(b)=1, count(c)=1), Row(a=1265497580201624514, count(a)=1, count(b)=1, count(c)=1), Row(a=1362706712718160032, count(a)=1, count(b)=1, count(c)=1), Row(a=1539402556111763558, count(a)=1, count(b)=1, count(c)=1), Row(a=1680065304134987932, count(a)=1, count(b)=1, count(c)=1), Row(a=1819112056103700194, count(a)=1, count(b)=1, count(c)=1), Row(a=2075383307430444458, count(a)=1, count(b)=1, count(c)=1), Row(a=2229783493997241597, count(a)=1, count(b)=1, count(c)=1), Row(a=2251193521986836658, count(a)=1, count(b)=1, count(c)=1), Row(a=2354525851037327742, count(a)=1, count(b)=1, count(c)=1), Row(a=2534571592304619590, count(a)=1, count(b)=1, count(c)=1), Row(a=2889855722692441528, count(a)=1, count(b)=1, count(c)=1), Row(a=3221645619906578280, count(a)=1, count(b)=1, count(c)=1), Row(a=3471682867514641842, count(a)=1, count(b)=1, count(c)=1), Row(a=3852192240925952971, count(a)=1, count(b)=1, count(c)=1), Row(a=4017568188141579524, count(a)=1, count(b)=1, count(c)=1), Row(a=4238750827217987735, count(a)=1, count(b)=1, count(c)=1), Row(a=5051064189658334530, count(a)=1, count(b)=1, count(c)=1), Row(a=5222614686872201741, count(a)=1, count(b)=1, count(c)=1), Row(a=5264124301174436230, count(a)=1, count(b)=1, count(c)=1), Row(a=5331804796221648840, count(a)=1, count(b)=1, count(c)=1), Row(a=5761446890858753124, count(a)=1, count(b)=1, count(c)=1), Row(a=5832380720258166308, count(a)=1, count(b)=1, count(c)=1), Row(a=5904436199519765966, count(a)=1, count(b)=1, count(c)=1), Row(a=6075221653337964625, count(a)=1, count(b)=1, count(c)=1), Row(a=6359360623264328942, count(a)=1, count(b)=1, count(c)=1), Row(a=6365557707853023542, count(a)=1, count(b)=1, count(c)=1), Row(a=6371959128213970013, count(a)=1, count(b)=1, count(c)=1), Row(a=6445989476973674931, count(a)=1, count(b)=1, count(c)=1), Row(a=6446878210185090927, count(a)=1, count(b)=1, count(c)=1), Row(a=7184613054711285292, count(a)=1, count(b)=1, count(c)=1), Row(a=7198729688045931692, count(a)=1, count(b)=1, count(c)=1), Row(a=7258339666698152444, count(a)=1, count(b)=1, count(c)=1), Row(a=7395372434300466361, count(a)=1, count(b)=1, count(c)=1), Row(a=7401983586362591631, count(a)=1, count(b)=1, count(c)=1), Row(a=7618709293599214015, count(a)=1, count(b)=1, count(c)=1), Row(a=7956328026836954420, count(a)=1, count(b)=1, count(c)=1), Row(a=8198116221032872987, count(a)=1, count(b)=1, count(c)=1), Row(a=8886241008042893729, count(a)=1, count(b)=1, count(c)=1)]
GPU OUTPUT: [Row(a=-9223372036854775808, count(a)=2, count(b)=2, count(c)=2), Row(a=-8993871743395121636, count(a)=1, count(b)=1, count(c)=1), Row(a=-8824564747028895090, count(a)=1, count(b)=1, count(c)=1), Row(a=-8360439097461740684, count(a)=1, count(b)=1, count(c)=1), Row(a=-8119367677816790003, count(a)=1, count(b)=1, count(c)=1), Row(a=-8095240098983490059, count(a)=1, count(b)=1, count(c)=1), Row(a=-8074900563395293024, count(a)=1, count(b)=1, count(c)=1), Row(a=-7916182562340764963, count(a)=1, count(b)=1, count(c)=1), Row(a=-7644040328848254512, count(a)=1, count(b)=1, count(c)=1), Row(a=-7551557475767929245, count(a)=1, count(b)=1, count(c)=1), Row(a=-7419569242595387455, count(a)=1, count(b)=1, count(c)=1), Row(a=-7130683010620631203, count(a)=1, count(b)=1, count(c)=1), Row(a=-7029864373143088702, count(a)=1, count(b)=1, count(c)=1), Row(a=-6726790004526438438, count(a)=1, count(b)=1, count(c)=1), Row(a=-6681175467107958668, count(a)=1, count(b)=1, count(c)=1), Row(a=-6669292098421320609, count(a)=1, count(b)=1, count(c)=1), Row(a=-6228871387240662005, count(a)=1, count(b)=1, count(c)=1), Row(a=-6150492885085058765, count(a)=1, count(b)=1, count(c)=1), Row(a=-6063156676697350017, count(a)=1, count(b)=1, count(c)=1), Row(a=-5696274501923937029, count(a)=1, count(b)=1, count(c)=1), Row(a=-5545906764439179960, count(a)=1, count(b)=1, count(c)=1), Row(a=-5249581929350276040, count(a)=1, count(b)=1, count(c)=1), Row(a=-5244152136580518692, count(a)=1, count(b)=1, count(c)=1), Row(a=-5147140527860197588, count(a)=1, count(b)=1, count(c)=1), Row(a=-5133656973475552689, count(a)=1, count(b)=1, count(c)=1), Row(a=-4634307270092053473, count(a)=1, count(b)=1, count(c)=1), Row(a=-4594481394522420980, count(a)=1, count(b)=1, count(c)=1), Row(a=-4563575260449999225, count(a)=1, count(b)=1, count(c)=1), Row(a=-4324222002682111580, count(a)=1, count(b)=1, count(c)=1), Row(a=-4320992407945189370, count(a)=1, count(b)=1, count(c)=1), Row(a=-3917032101531217289, count(a)=1, count(b)=1, count(c)=1), Row(a=-3879498789179448709, count(a)=1, count(b)=1, count(c)=1), Row(a=-3854271584414532784, count(a)=1, count(b)=1, count(c)=1), Row(a=-3786594002235441489, count(a)=1, count(b)=1, count(c)=1), Row(a=-3664974252843436884, count(a)=1, count(b)=1, count(c)=1), Row(a=-3502159106106506455, count(a)=1, count(b)=1, count(c)=1), Row(a=-3468876372831096612, count(a)=1, count(b)=1, count(c)=1), Row(a=-3416317927450743577, count(a)=1, count(b)=1, count(c)=1), Row(a=-3210768190877665201, count(a)=1, count(b)=1, count(c)=1), Row(a=-3191579259939627208, count(a)=1, count(b)=1, count(c)=1), Row(a=-2829936275809760174, count(a)=1, count(b)=1, count(c)=1), Row(a=-2828476488387110055, count(a)=1, count(b)=1, count(c)=1), Row(a=-2821373815087770381, count(a)=1, count(b)=1, count(c)=1), Row(a=-2720838936747632101, count(a)=1, count(b)=1, count(c)=1), Row(a=-2602749590540254350, count(a)=0, count(b)=1, count(c)=1), Row(a=-2006832105721144106, count(a)=1, count(b)=1, count(c)=1), Row(a=-1565992008335861162, count(a)=1, count(b)=1, count(c)=1), Row(a=-1522131656554370869, count(a)=1, count(b)=1, count(c)=1), Row(a=-1515104068702799781, count(a)=1, count(b)=1, count(c)=1), Row(a=-948363822265177572, count(a)=1, count(b)=1, count(c)=1), Row(a=-847663416274407371, count(a)=1, count(b)=1, count(c)=1), Row(a=-758486987975055276, count(a)=1, count(b)=1, count(c)=1), Row(a=-545444698343657872, count(a)=1, count(b)=1, count(c)=1), Row(a=-335231079646476073, count(a)=1, count(b)=1, count(c)=1), Row(a=-255208803392541585, count(a)=1, count(b)=1, count(c)=1), Row(a=-199240735297494389, count(a)=1, count(b)=1, count(c)=1), Row(a=-55529886861161874, count(a)=1, count(b)=1, count(c)=1), Row(a=-1, count(a)=1, count(b)=1, count(c)=1), Row(a=1, count(a)=1, count(b)=1, count(c)=1), Row(a=815999380670977075, count(a)=1, count(b)=1, count(c)=1), Row(a=958747012124550583, count(a)=1, count(b)=1, count(c)=1), Row(a=1265497580201624514, count(a)=1, count(b)=1, count(c)=1), Row(a=1362706712718160032, count(a)=1, count(b)=1, count(c)=1), Row(a=1539402556111763558, count(a)=1, count(b)=1, count(c)=1), Row(a=1680065304134987932, count(a)=1, count(b)=1, count(c)=1), Row(a=1819112056103700194, count(a)=1, count(b)=1, count(c)=1), Row(a=2075383307430444458, count(a)=1, count(b)=1, count(c)=1), Row(a=2229783493997241597, count(a)=1, count(b)=1, count(c)=1), Row(a=2251193521986836658, count(a)=1, count(b)=1, count(c)=1), Row(a=2354525851037327742, count(a)=0, count(b)=1, count(c)=1), Row(a=2534571592304619590, count(a)=1, count(b)=1, count(c)=1), Row(a=2889855722692441528, count(a)=1, count(b)=1, count(c)=1), Row(a=3221645619906578280, count(a)=1, count(b)=1, count(c)=1), Row(a=3471682867514641842, count(a)=1, count(b)=1, count(c)=1), Row(a=3852192240925952971, count(a)=1, count(b)=1, count(c)=1), Row(a=4017568188141579524, count(a)=1, count(b)=1, count(c)=1), Row(a=4238750827217987735, count(a)=1, count(b)=1, count(c)=1), Row(a=5051064189658334530, count(a)=1, count(b)=1, count(c)=1), Row(a=5222614686872201741, count(a)=1, count(b)=1, count(c)=1), Row(a=5264124301174436230, count(a)=1, count(b)=1, count(c)=1), Row(a=5331804796221648840, count(a)=1, count(b)=1, count(c)=1), Row(a=5761446890858753124, count(a)=0, count(b)=1, count(c)=1), Row(a=5832380720258166308, count(a)=1, count(b)=1, count(c)=1), Row(a=5904436199519765966, count(a)=1, count(b)=1, count(c)=1), Row(a=6075221653337964625, count(a)=1, count(b)=1, count(c)=1), Row(a=6359360623264328942, count(a)=1, count(b)=1, count(c)=1), Row(a=6365557707853023542, count(a)=1, count(b)=1, count(c)=1), Row(a=6371959128213970013, count(a)=1, count(b)=1, count(c)=1), Row(a=6445989476973674931, count(a)=1, count(b)=1, count(c)=1), Row(a=6446878210185090927, count(a)=1, count(b)=1, count(c)=1), Row(a=7184613054711285292, count(a)=1, count(b)=1, count(c)=1), Row(a=7198729688045931692, count(a)=1, count(b)=1, count(c)=1), Row(a=7258339666698152444, count(a)=1, count(b)=1, count(c)=1), Row(a=7395372434300466361, count(a)=1, count(b)=1, count(c)=1), Row(a=7401983586362591631, count(a)=1, count(b)=1, count(c)=1), Row(a=7618709293599214015, count(a)=1, count(b)=1, count(c)=1), Row(a=7956328026836954420, count(a)=1, count(b)=1, count(c)=1), Row(a=8198116221032872987, count(a)=1, count(b)=1, count(c)=1), Row(a=8886241008042893729, count(a)=1, count(b)=1, count(c)=1)]
@jlowe jlowe added bug Something isn't working ? - Needs Triage Need team to review and classify labels Mar 16, 2022
@revans2 revans2 added the P0 Must have for release label Mar 17, 2022
@abellina abellina added P1 Nice to have for release and removed P0 Must have for release labels Mar 21, 2022
@abellina
Copy link
Collaborator

This is a P2 as of now because split aggregates between CPU/GPU were disabled for Databricks 10.4 here: #4974.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working P1 Nice to have for release
Projects
None yet
Development

No branches or pull requests

4 participants