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] test_from_json_mixed_types_list_struct failed #10351

Closed
jlowe opened this issue Jan 31, 2024 · 7 comments · Fixed by #11319
Closed

[BUG] test_from_json_mixed_types_list_struct failed #10351

jlowe opened this issue Jan 31, 2024 · 7 comments · Fixed by #11319
Assignees
Labels
bug Something isn't working cudf_dependency An issue or PR with this label depends on a new feature in cudf

Comments

@jlowe
Copy link
Member

jlowe commented Jan 31, 2024

[2024-01-31T20:47:58.664Z] =========================== short test summary info ============================
[2024-01-31T20:47:58.664Z] FAILED ../../src/main/python/json_test.py::test_from_json_mixed_types_list_struct[struct<a:string>][DATAGEN_SEED=1706710850, INJECT_OOM]
[2024-01-31T20:47:58.664Z] = 1 failed, 21488 passed, 1743 skipped, 719 xfailed, 2502 xpassed, 12115 warnings in 23223.91s (6:27:03) =
Details
[2024-01-31T20:47:58.663Z] =================================== FAILURES ===================================

[2024-01-31T20:47:58.663Z] ___________ test_from_json_mixed_types_list_struct[struct<a:string>] ___________

[2024-01-31T20:47:58.663Z] 

[2024-01-31T20:47:58.663Z] schema = 'struct<a:string>'

[2024-01-31T20:47:58.663Z] 

[2024-01-31T20:47:58.663Z]     @pytest.mark.parametrize('schema', [

[2024-01-31T20:47:58.663Z]         'struct<a:string>'

[2024-01-31T20:47:58.663Z]     ])

[2024-01-31T20:47:58.663Z]     @allow_non_gpu(*non_utc_allow)

[2024-01-31T20:47:58.663Z]     def test_from_json_mixed_types_list_struct(schema):

[2024-01-31T20:47:58.663Z]         json_string_gen = StringGen(r'{"a": (\[1,2,3\]|{"b":"[a-z]{2}"}) }')

[2024-01-31T20:47:58.663Z] >       assert_gpu_and_cpu_are_equal_collect(

[2024-01-31T20:47:58.663Z]             lambda spark : unary_op_df(spark, json_string_gen) \

[2024-01-31T20:47:58.663Z]                 .select('a', f.from_json('a', schema)),

[2024-01-31T20:47:58.663Z]             conf={"spark.rapids.sql.expression.JsonToStructs": True,

[2024-01-31T20:47:58.663Z]                   'spark.rapids.sql.json.read.mixedTypesAsString.enabled': True})

[2024-01-31T20:47:58.663Z] 

[2024-01-31T20:47:58.663Z] ../../src/main/python/json_test.py:833: 

[2024-01-31T20:47:58.663Z] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

[2024-01-31T20:47:58.663Z] ../../src/main/python/asserts.py:595: in assert_gpu_and_cpu_are_equal_collect

[2024-01-31T20:47:58.663Z]     _assert_gpu_and_cpu_are_equal(func, 'COLLECT', conf=conf, is_cpu_first=is_cpu_first, result_canonicalize_func_before_compare=result_canonicalize_func_before_compare)

[2024-01-31T20:47:58.663Z] ../../src/main/python/asserts.py:517: in _assert_gpu_and_cpu_are_equal

[2024-01-31T20:47:58.663Z]     assert_equal(from_cpu, from_gpu)

[2024-01-31T20:47:58.663Z] ../../src/main/python/asserts.py:107: in assert_equal

[2024-01-31T20:47:58.663Z]     _assert_equal(cpu, gpu, float_check=get_float_check(), path=[])

[2024-01-31T20:47:58.663Z] ../../src/main/python/asserts.py:43: in _assert_equal

[2024-01-31T20:47:58.663Z]     _assert_equal(cpu[index], gpu[index], float_check, path + [index])

[2024-01-31T20:47:58.663Z] ../../src/main/python/asserts.py:36: in _assert_equal

[2024-01-31T20:47:58.663Z]     _assert_equal(cpu[field], gpu[field], float_check, path + [field])

[2024-01-31T20:47:58.663Z] ../../src/main/python/asserts.py:36: in _assert_equal

[2024-01-31T20:47:58.663Z]     _assert_equal(cpu[field], gpu[field], float_check, path + [field])

[2024-01-31T20:47:58.663Z] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

[2024-01-31T20:47:58.663Z] 

[2024-01-31T20:47:58.663Z] cpu = '{"b":"mh"}', gpu = '{mh}'

[2024-01-31T20:47:58.663Z] float_check = <function get_float_check.<locals>.<lambda> at 0x7f578bae0160>

[2024-01-31T20:47:58.663Z] path = [84, 'from_json(a)', 'a']

[2024-01-31T20:47:58.663Z] 

[2024-01-31T20:47:58.663Z]     def _assert_equal(cpu, gpu, float_check, path):

[2024-01-31T20:47:58.663Z]         t = type(cpu)

[2024-01-31T20:47:58.663Z]         if (t is Row):

[2024-01-31T20:47:58.663Z]             assert len(cpu) == len(gpu), "CPU and GPU row have different lengths at {} CPU: {} GPU: {}".format(path, len(cpu), len(gpu))

[2024-01-31T20:47:58.663Z]             if hasattr(cpu, "__fields__") and hasattr(gpu, "__fields__"):

[2024-01-31T20:47:58.663Z]                 assert cpu.__fields__ == gpu.__fields__, "CPU and GPU row have different fields at {} CPU: {} GPU: {}".format(path, cpu.__fields__, gpu.__fields__)

[2024-01-31T20:47:58.663Z]                 for field in cpu.__fields__:

[2024-01-31T20:47:58.663Z]                     _assert_equal(cpu[field], gpu[field], float_check, path + [field])

[2024-01-31T20:47:58.663Z]             else:

[2024-01-31T20:47:58.663Z]                 for index in range(len(cpu)):

[2024-01-31T20:47:58.663Z]                     _assert_equal(cpu[index], gpu[index], float_check, path + [index])

[2024-01-31T20:47:58.663Z]         elif (t is list):

[2024-01-31T20:47:58.663Z]             assert len(cpu) == len(gpu), "CPU and GPU list have different lengths at {} CPU: {} GPU: {}".format(path, len(cpu), len(gpu))

[2024-01-31T20:47:58.663Z]             for index in range(len(cpu)):

[2024-01-31T20:47:58.663Z]                 _assert_equal(cpu[index], gpu[index], float_check, path + [index])

[2024-01-31T20:47:58.663Z]         elif (t is tuple):

[2024-01-31T20:47:58.663Z]             assert len(cpu) == len(gpu), "CPU and GPU list have different lengths at {} CPU: {} GPU: {}".format(path, len(cpu), len(gpu))

[2024-01-31T20:47:58.663Z]             for index in range(len(cpu)):

[2024-01-31T20:47:58.663Z]                 _assert_equal(cpu[index], gpu[index], float_check, path + [index])

[2024-01-31T20:47:58.663Z]         elif (t is pytypes.GeneratorType):

[2024-01-31T20:47:58.663Z]             index = 0

[2024-01-31T20:47:58.663Z]             # generator has no zip :( so we have to do this the hard way

[2024-01-31T20:47:58.663Z]             done = False

[2024-01-31T20:47:58.663Z]             while not done:

[2024-01-31T20:47:58.663Z]                 sub_cpu = None

[2024-01-31T20:47:58.663Z]                 sub_gpu = None

[2024-01-31T20:47:58.663Z]                 try:

[2024-01-31T20:47:58.663Z]                     sub_cpu = next(cpu)

[2024-01-31T20:47:58.663Z]                 except StopIteration:

[2024-01-31T20:47:58.663Z]                     done = True

[2024-01-31T20:47:58.663Z]     

[2024-01-31T20:47:58.663Z]                 try:

[2024-01-31T20:47:58.663Z]                     sub_gpu = next(gpu)

[2024-01-31T20:47:58.663Z]                 except StopIteration:

[2024-01-31T20:47:58.663Z]                     done = True

[2024-01-31T20:47:58.663Z]     

[2024-01-31T20:47:58.663Z]                 if done:

[2024-01-31T20:47:58.663Z]                     assert sub_cpu == sub_gpu and sub_cpu == None, "CPU and GPU generators have different lengths at {}".format(path)

[2024-01-31T20:47:58.663Z]                 else:

[2024-01-31T20:47:58.663Z]                     _assert_equal(sub_cpu, sub_gpu, float_check, path + [index])

[2024-01-31T20:47:58.663Z]     

[2024-01-31T20:47:58.663Z]                 index = index + 1

[2024-01-31T20:47:58.663Z]         elif (t is dict):

[2024-01-31T20:47:58.663Z]             # The order of key/values is not guaranteed in python dicts, nor are they guaranteed by Spark

[2024-01-31T20:47:58.663Z]             # so sort the items to do our best with ignoring the order of dicts

[2024-01-31T20:47:58.663Z]             cpu_items = list(cpu.items()).sort(key=_RowCmp)

[2024-01-31T20:47:58.663Z]             gpu_items = list(gpu.items()).sort(key=_RowCmp)

[2024-01-31T20:47:58.663Z]             _assert_equal(cpu_items, gpu_items, float_check, path + ["map"])

[2024-01-31T20:47:58.663Z]         elif (t is int):

[2024-01-31T20:47:58.663Z]             assert cpu == gpu, "GPU and CPU int values are different at {}".format(path)

[2024-01-31T20:47:58.663Z]         elif (t is float):

[2024-01-31T20:47:58.663Z]             if (math.isnan(cpu)):

[2024-01-31T20:47:58.663Z]                 assert math.isnan(gpu), "GPU and CPU float values are different at {}".format(path)

[2024-01-31T20:47:58.663Z]             else:

[2024-01-31T20:47:58.663Z]                 assert float_check(cpu, gpu), "GPU and CPU float values are different {}".format(path)

[2024-01-31T20:47:58.663Z]         elif isinstance(cpu, str):

[2024-01-31T20:47:58.663Z] >           assert cpu == gpu, "GPU and CPU string values are different at {}".format(path)

[2024-01-31T20:47:58.663Z] E           AssertionError: GPU and CPU string values are different at [84, 'from_json(a)', 'a']
@jlowe jlowe added bug Something isn't working ? - Needs Triage Need team to review and classify labels Jan 31, 2024
@jlowe
Copy link
Member Author

jlowe commented Jan 31, 2024

Row comparison failure details
[2024-01-31T20:47:58.663Z] --- CPU OUTPUT

[2024-01-31T20:47:58.663Z] +++ GPU OUTPUT

[2024-01-31T20:47:58.663Z] @@ -82,48 +82,48 @@

[2024-01-31T20:47:58.663Z]  Row(a=None, from_json(a)=None)

[2024-01-31T20:47:58.663Z]  Row(a='{"a": {"b":"iz"} }', from_json(a)=Row(a='{"b":"iz"}'))

[2024-01-31T20:47:58.663Z]  Row(a='{"a": {"b":"md"} }', from_json(a)=Row(a='{"b":"md"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"mh"} }', from_json(a)=Row(a='{"b":"mh"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"od"} }', from_json(a)=Row(a='{"b":"od"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"lq"} }', from_json(a)=Row(a='{"b":"lq"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"ss"} }', from_json(a)=Row(a='{"b":"ss"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"yw"} }', from_json(a)=Row(a='{"b":"yw"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"bc"} }', from_json(a)=Row(a='{"b":"bc"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"ud"} }', from_json(a)=Row(a='{"b":"ud"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"rj"} }', from_json(a)=Row(a='{"b":"rj"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"qe"} }', from_json(a)=Row(a='{"b":"qe"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"fr"} }', from_json(a)=Row(a='{"b":"fr"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"wz"} }', from_json(a)=Row(a='{"b":"wz"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"ry"} }', from_json(a)=Row(a='{"b":"ry"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"hh"} }', from_json(a)=Row(a='{"b":"hh"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"ag"} }', from_json(a)=Row(a='{"b":"ag"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"tt"} }', from_json(a)=Row(a='{"b":"tt"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"jc"} }', from_json(a)=Row(a='{"b":"jc"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"jg"} }', from_json(a)=Row(a='{"b":"jg"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"ay"} }', from_json(a)=Row(a='{"b":"ay"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"lp"} }', from_json(a)=Row(a='{"b":"lp"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"sp"} }', from_json(a)=Row(a='{"b":"sp"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"hg"} }', from_json(a)=Row(a='{"b":"hg"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"hf"} }', from_json(a)=Row(a='{"b":"hf"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"fd"} }', from_json(a)=Row(a='{"b":"fd"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"en"} }', from_json(a)=Row(a='{"b":"en"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"zk"} }', from_json(a)=Row(a='{"b":"zk"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"wp"} }', from_json(a)=Row(a='{"b":"wp"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"og"} }', from_json(a)=Row(a='{"b":"og"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"lb"} }', from_json(a)=Row(a='{"b":"lb"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"hj"} }', from_json(a)=Row(a='{"b":"hj"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"mc"} }', from_json(a)=Row(a='{"b":"mc"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"qg"} }', from_json(a)=Row(a='{"b":"qg"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"ip"} }', from_json(a)=Row(a='{"b":"ip"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"hc"} }', from_json(a)=Row(a='{"b":"hc"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"ee"} }', from_json(a)=Row(a='{"b":"ee"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"dr"} }', from_json(a)=Row(a='{"b":"dr"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"uy"} }', from_json(a)=Row(a='{"b":"uy"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"hc"} }', from_json(a)=Row(a='{"b":"hc"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"km"} }', from_json(a)=Row(a='{"b":"km"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"ka"} }', from_json(a)=Row(a='{"b":"ka"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"fz"} }', from_json(a)=Row(a='{"b":"fz"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"rw"} }', from_json(a)=Row(a='{"b":"rw"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"pv"} }', from_json(a)=Row(a='{"b":"pv"}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"mh"} }', from_json(a)=Row(a='{mh}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"od"} }', from_json(a)=Row(a='{od}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"lq"} }', from_json(a)=Row(a='{lq}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"ss"} }', from_json(a)=Row(a='{ss}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"yw"} }', from_json(a)=Row(a='{yw}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"bc"} }', from_json(a)=Row(a='{bc}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"ud"} }', from_json(a)=Row(a='{ud}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"rj"} }', from_json(a)=Row(a='{rj}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"qe"} }', from_json(a)=Row(a='{qe}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"fr"} }', from_json(a)=Row(a='{fr}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"wz"} }', from_json(a)=Row(a='{wz}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"ry"} }', from_json(a)=Row(a='{ry}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"hh"} }', from_json(a)=Row(a='{hh}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"ag"} }', from_json(a)=Row(a='{ag}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"tt"} }', from_json(a)=Row(a='{tt}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"jc"} }', from_json(a)=Row(a='{jc}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"jg"} }', from_json(a)=Row(a='{jg}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"ay"} }', from_json(a)=Row(a='{ay}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"lp"} }', from_json(a)=Row(a='{lp}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"sp"} }', from_json(a)=Row(a='{sp}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"hg"} }', from_json(a)=Row(a='{hg}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"hf"} }', from_json(a)=Row(a='{hf}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"fd"} }', from_json(a)=Row(a='{fd}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"en"} }', from_json(a)=Row(a='{en}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"zk"} }', from_json(a)=Row(a='{zk}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"wp"} }', from_json(a)=Row(a='{wp}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"og"} }', from_json(a)=Row(a='{og}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"lb"} }', from_json(a)=Row(a='{lb}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"hj"} }', from_json(a)=Row(a='{hj}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"mc"} }', from_json(a)=Row(a='{mc}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"qg"} }', from_json(a)=Row(a='{qg}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"ip"} }', from_json(a)=Row(a='{ip}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"hc"} }', from_json(a)=Row(a='{hc}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"ee"} }', from_json(a)=Row(a='{ee}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"dr"} }', from_json(a)=Row(a='{dr}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"uy"} }', from_json(a)=Row(a='{uy}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"hc"} }', from_json(a)=Row(a='{hc}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"km"} }', from_json(a)=Row(a='{km}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"ka"} }', from_json(a)=Row(a='{ka}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"fz"} }', from_json(a)=Row(a='{fz}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"rw"} }', from_json(a)=Row(a='{rw}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"pv"} }', from_json(a)=Row(a='{pv}'))

[2024-01-31T20:47:58.663Z]  Row(a='{"a": {"b":"tu"} }', from_json(a)=Row(a='{"b":"tu"}'))

[2024-01-31T20:47:58.663Z]  Row(a='{"a": {"b":"zz"} }', from_json(a)=Row(a='{"b":"zz"}'))

[2024-01-31T20:47:58.663Z]  Row(a='{"a": {"b":"il"} }', from_json(a)=Row(a='{"b":"il"}'))

[2024-01-31T20:47:58.663Z] @@ -544,48 +544,48 @@

[2024-01-31T20:47:58.663Z]  Row(a='{"a": {"b":"tq"} }', from_json(a)=Row(a='{"b":"tq"}'))

[2024-01-31T20:47:58.663Z]  Row(a='{"a": {"b":"xh"} }', from_json(a)=Row(a='{"b":"xh"}'))

[2024-01-31T20:47:58.663Z]  Row(a='{"a": {"b":"mw"} }', from_json(a)=Row(a='{"b":"mw"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"og"} }', from_json(a)=Row(a='{"b":"og"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"oq"} }', from_json(a)=Row(a='{"b":"oq"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"nl"} }', from_json(a)=Row(a='{"b":"nl"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"lg"} }', from_json(a)=Row(a='{"b":"lg"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"cx"} }', from_json(a)=Row(a='{"b":"cx"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"uy"} }', from_json(a)=Row(a='{"b":"uy"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"zk"} }', from_json(a)=Row(a='{"b":"zk"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"ie"} }', from_json(a)=Row(a='{"b":"ie"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"fr"} }', from_json(a)=Row(a='{"b":"fr"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"go"} }', from_json(a)=Row(a='{"b":"go"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"bj"} }', from_json(a)=Row(a='{"b":"bj"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"sn"} }', from_json(a)=Row(a='{"b":"sn"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"le"} }', from_json(a)=Row(a='{"b":"le"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"od"} }', from_json(a)=Row(a='{"b":"od"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"vq"} }', from_json(a)=Row(a='{"b":"vq"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"hb"} }', from_json(a)=Row(a='{"b":"hb"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"cx"} }', from_json(a)=Row(a='{"b":"cx"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"ri"} }', from_json(a)=Row(a='{"b":"ri"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"ux"} }', from_json(a)=Row(a='{"b":"ux"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"qy"} }', from_json(a)=Row(a='{"b":"qy"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"uy"} }', from_json(a)=Row(a='{"b":"uy"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"mo"} }', from_json(a)=Row(a='{"b":"mo"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"zn"} }', from_json(a)=Row(a='{"b":"zn"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"vu"} }', from_json(a)=Row(a='{"b":"vu"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"wp"} }', from_json(a)=Row(a='{"b":"wp"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"rs"} }', from_json(a)=Row(a='{"b":"rs"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"hm"} }', from_json(a)=Row(a='{"b":"hm"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"ys"} }', from_json(a)=Row(a='{"b":"ys"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"de"} }', from_json(a)=Row(a='{"b":"de"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"lh"} }', from_json(a)=Row(a='{"b":"lh"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"ag"} }', from_json(a)=Row(a='{"b":"ag"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"fj"} }', from_json(a)=Row(a='{"b":"fj"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"gu"} }', from_json(a)=Row(a='{"b":"gu"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"ff"} }', from_json(a)=Row(a='{"b":"ff"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"ga"} }', from_json(a)=Row(a='{"b":"ga"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"lo"} }', from_json(a)=Row(a='{"b":"lo"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"yf"} }', from_json(a)=Row(a='{"b":"yf"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"gv"} }', from_json(a)=Row(a='{"b":"gv"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"dy"} }', from_json(a)=Row(a='{"b":"dy"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"jj"} }', from_json(a)=Row(a='{"b":"jj"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"zn"} }', from_json(a)=Row(a='{"b":"zn"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"uj"} }', from_json(a)=Row(a='{"b":"uj"}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"og"} }', from_json(a)=Row(a='{og}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"oq"} }', from_json(a)=Row(a='{oq}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"nl"} }', from_json(a)=Row(a='{nl}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"lg"} }', from_json(a)=Row(a='{lg}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"cx"} }', from_json(a)=Row(a='{cx}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"uy"} }', from_json(a)=Row(a='{uy}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"zk"} }', from_json(a)=Row(a='{zk}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"ie"} }', from_json(a)=Row(a='{ie}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"fr"} }', from_json(a)=Row(a='{fr}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"go"} }', from_json(a)=Row(a='{go}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"bj"} }', from_json(a)=Row(a='{bj}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"sn"} }', from_json(a)=Row(a='{sn}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"le"} }', from_json(a)=Row(a='{le}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"od"} }', from_json(a)=Row(a='{od}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"vq"} }', from_json(a)=Row(a='{vq}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"hb"} }', from_json(a)=Row(a='{hb}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"cx"} }', from_json(a)=Row(a='{cx}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"ri"} }', from_json(a)=Row(a='{ri}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"ux"} }', from_json(a)=Row(a='{ux}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"qy"} }', from_json(a)=Row(a='{qy}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"uy"} }', from_json(a)=Row(a='{uy}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"mo"} }', from_json(a)=Row(a='{mo}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"zn"} }', from_json(a)=Row(a='{zn}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"vu"} }', from_json(a)=Row(a='{vu}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"wp"} }', from_json(a)=Row(a='{wp}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"rs"} }', from_json(a)=Row(a='{rs}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"hm"} }', from_json(a)=Row(a='{hm}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"ys"} }', from_json(a)=Row(a='{ys}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"de"} }', from_json(a)=Row(a='{de}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"lh"} }', from_json(a)=Row(a='{lh}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"ag"} }', from_json(a)=Row(a='{ag}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"fj"} }', from_json(a)=Row(a='{fj}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"gu"} }', from_json(a)=Row(a='{gu}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"ff"} }', from_json(a)=Row(a='{ff}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"ga"} }', from_json(a)=Row(a='{ga}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"lo"} }', from_json(a)=Row(a='{lo}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"yf"} }', from_json(a)=Row(a='{yf}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"gv"} }', from_json(a)=Row(a='{gv}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"dy"} }', from_json(a)=Row(a='{dy}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"jj"} }', from_json(a)=Row(a='{jj}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"zn"} }', from_json(a)=Row(a='{zn}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"uj"} }', from_json(a)=Row(a='{uj}'))

[2024-01-31T20:47:58.663Z]  Row(a='{"a": {"b":"mz"} }', from_json(a)=Row(a='{"b":"mz"}'))

[2024-01-31T20:47:58.663Z]  Row(a='{"a": {"b":"pt"} }', from_json(a)=Row(a='{"b":"pt"}'))

[2024-01-31T20:47:58.663Z]  Row(a='{"a": {"b":"fn"} }', from_json(a)=Row(a='{"b":"fn"}'))

[2024-01-31T20:47:58.663Z] @@ -712,48 +712,48 @@

[2024-01-31T20:47:58.663Z]  Row(a='{"a": {"b":"ov"} }', from_json(a)=Row(a='{"b":"ov"}'))

[2024-01-31T20:47:58.663Z]  Row(a='{"a": {"b":"nk"} }', from_json(a)=Row(a='{"b":"nk"}'))

[2024-01-31T20:47:58.663Z]  Row(a=None, from_json(a)=None)

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"sb"} }', from_json(a)=Row(a='{"b":"sb"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"in"} }', from_json(a)=Row(a='{"b":"in"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"sf"} }', from_json(a)=Row(a='{"b":"sf"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"oi"} }', from_json(a)=Row(a='{"b":"oi"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"au"} }', from_json(a)=Row(a='{"b":"au"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"cq"} }', from_json(a)=Row(a='{"b":"cq"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"uz"} }', from_json(a)=Row(a='{"b":"uz"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"hk"} }', from_json(a)=Row(a='{"b":"hk"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"iz"} }', from_json(a)=Row(a='{"b":"iz"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"tj"} }', from_json(a)=Row(a='{"b":"tj"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"sx"} }', from_json(a)=Row(a='{"b":"sx"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"nc"} }', from_json(a)=Row(a='{"b":"nc"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"gv"} }', from_json(a)=Row(a='{"b":"gv"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"gd"} }', from_json(a)=Row(a='{"b":"gd"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"mc"} }', from_json(a)=Row(a='{"b":"mc"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"iu"} }', from_json(a)=Row(a='{"b":"iu"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"wd"} }', from_json(a)=Row(a='{"b":"wd"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"um"} }', from_json(a)=Row(a='{"b":"um"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"jh"} }', from_json(a)=Row(a='{"b":"jh"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"jk"} }', from_json(a)=Row(a='{"b":"jk"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"nu"} }', from_json(a)=Row(a='{"b":"nu"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"am"} }', from_json(a)=Row(a='{"b":"am"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"at"} }', from_json(a)=Row(a='{"b":"at"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"qx"} }', from_json(a)=Row(a='{"b":"qx"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"ce"} }', from_json(a)=Row(a='{"b":"ce"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"zu"} }', from_json(a)=Row(a='{"b":"zu"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"mz"} }', from_json(a)=Row(a='{"b":"mz"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"fn"} }', from_json(a)=Row(a='{"b":"fn"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"iz"} }', from_json(a)=Row(a='{"b":"iz"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"us"} }', from_json(a)=Row(a='{"b":"us"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"zl"} }', from_json(a)=Row(a='{"b":"zl"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"ko"} }', from_json(a)=Row(a='{"b":"ko"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"mh"} }', from_json(a)=Row(a='{"b":"mh"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"qs"} }', from_json(a)=Row(a='{"b":"qs"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"pd"} }', from_json(a)=Row(a='{"b":"pd"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"mr"} }', from_json(a)=Row(a='{"b":"mr"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"vl"} }', from_json(a)=Row(a='{"b":"vl"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"kh"} }', from_json(a)=Row(a='{"b":"kh"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"mo"} }', from_json(a)=Row(a='{"b":"mo"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"qe"} }', from_json(a)=Row(a='{"b":"qe"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"la"} }', from_json(a)=Row(a='{"b":"la"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"wl"} }', from_json(a)=Row(a='{"b":"wl"}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"sb"} }', from_json(a)=Row(a='{sb}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"in"} }', from_json(a)=Row(a='{in}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"sf"} }', from_json(a)=Row(a='{sf}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"oi"} }', from_json(a)=Row(a='{oi}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"au"} }', from_json(a)=Row(a='{au}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"cq"} }', from_json(a)=Row(a='{cq}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"uz"} }', from_json(a)=Row(a='{uz}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"hk"} }', from_json(a)=Row(a='{hk}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"iz"} }', from_json(a)=Row(a='{iz}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"tj"} }', from_json(a)=Row(a='{tj}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"sx"} }', from_json(a)=Row(a='{sx}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"nc"} }', from_json(a)=Row(a='{nc}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"gv"} }', from_json(a)=Row(a='{gv}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"gd"} }', from_json(a)=Row(a='{gd}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"mc"} }', from_json(a)=Row(a='{mc}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"iu"} }', from_json(a)=Row(a='{iu}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"wd"} }', from_json(a)=Row(a='{wd}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"um"} }', from_json(a)=Row(a='{um}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"jh"} }', from_json(a)=Row(a='{jh}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"jk"} }', from_json(a)=Row(a='{jk}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"nu"} }', from_json(a)=Row(a='{nu}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"am"} }', from_json(a)=Row(a='{am}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"at"} }', from_json(a)=Row(a='{at}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"qx"} }', from_json(a)=Row(a='{qx}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"ce"} }', from_json(a)=Row(a='{ce}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"zu"} }', from_json(a)=Row(a='{zu}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"mz"} }', from_json(a)=Row(a='{mz}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"fn"} }', from_json(a)=Row(a='{fn}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"iz"} }', from_json(a)=Row(a='{iz}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"us"} }', from_json(a)=Row(a='{us}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"zl"} }', from_json(a)=Row(a='{zl}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"ko"} }', from_json(a)=Row(a='{ko}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"mh"} }', from_json(a)=Row(a='{mh}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"qs"} }', from_json(a)=Row(a='{qs}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"pd"} }', from_json(a)=Row(a='{pd}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"mr"} }', from_json(a)=Row(a='{mr}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"vl"} }', from_json(a)=Row(a='{vl}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"kh"} }', from_json(a)=Row(a='{kh}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"mo"} }', from_json(a)=Row(a='{mo}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"qe"} }', from_json(a)=Row(a='{qe}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"la"} }', from_json(a)=Row(a='{la}'))

[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"wl"} }', from_json(a)=Row(a='{wl}'))

[2024-01-31T20:47:58.663Z]  Row(a='{"a": {"b":"gl"} }', from_json(a)=Row(a='{"b":"gl"}'))

[2024-01-31T20:47:58.663Z]  Row(a='{"a": {"b":"ht"} }', from_json(a)=Row(a='{"b":"ht"}'))

[2024-01-31T20:47:58.663Z]  Row(a='{"a": {"b":"sq"} }', from_json(a)=Row(a='{"b":"sq"}'))

[2024-01-31T20:47:58.663Z] @@ -922,48 +922,48 @@

[2024-01-31T20:47:58.663Z]  Row(a=None, from_json(a)=None)

[2024-01-31T20:47:58.663Z]  Row(a='{"a": {"b":"ai"} }', from_json(a)=Row(a='{"b":"ai"}'))

[2024-01-31T20:47:58.663Z]  Row(a='{"a": {"b":"ak"} }', from_json(a)=Row(a='{"b":"ak"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"jf"} }', from_json(a)=Row(a='{"b":"jf"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"jy"} }', from_json(a)=Row(a='{"b":"jy"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"wb"} }', from_json(a)=Row(a='{"b":"wb"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"mf"} }', from_json(a)=Row(a='{"b":"mf"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"nc"} }', from_json(a)=Row(a='{"b":"nc"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"ie"} }', from_json(a)=Row(a='{"b":"ie"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"ka"} }', from_json(a)=Row(a='{"b":"ka"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"jc"} }', from_json(a)=Row(a='{"b":"jc"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"ag"} }', from_json(a)=Row(a='{"b":"ag"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"xt"} }', from_json(a)=Row(a='{"b":"xt"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"gi"} }', from_json(a)=Row(a='{"b":"gi"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"ia"} }', from_json(a)=Row(a='{"b":"ia"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"ac"} }', from_json(a)=Row(a='{"b":"ac"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"rf"} }', from_json(a)=Row(a='{"b":"rf"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"uq"} }', from_json(a)=Row(a='{"b":"uq"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"nc"} }', from_json(a)=Row(a='{"b":"nc"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"yp"} }', from_json(a)=Row(a='{"b":"yp"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"xm"} }', from_json(a)=Row(a='{"b":"xm"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"gu"} }', from_json(a)=Row(a='{"b":"gu"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"do"} }', from_json(a)=Row(a='{"b":"do"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"ob"} }', from_json(a)=Row(a='{"b":"ob"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"bc"} }', from_json(a)=Row(a='{"b":"bc"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"hi"} }', from_json(a)=Row(a='{"b":"hi"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"rb"} }', from_json(a)=Row(a='{"b":"rb"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"yo"} }', from_json(a)=Row(a='{"b":"yo"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"ay"} }', from_json(a)=Row(a='{"b":"ay"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"gs"} }', from_json(a)=Row(a='{"b":"gs"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"qa"} }', from_json(a)=Row(a='{"b":"qa"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"iv"} }', from_json(a)=Row(a='{"b":"iv"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"fj"} }', from_json(a)=Row(a='{"b":"fj"}'))

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"wq"} }', from_json(a)=Row(a='{"b":"wq"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"an"} }', from_json(a)=Row(a='{"b":"an"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"sl"} }', from_json(a)=Row(a='{"b":"sl"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"bp"} }', from_json(a)=Row(a='{"b":"bp"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"qp"} }', from_json(a)=Row(a='{"b":"qp"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"le"} }', from_json(a)=Row(a='{"b":"le"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"vk"} }', from_json(a)=Row(a='{"b":"vk"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"sn"} }', from_json(a)=Row(a='{"b":"sn"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"rn"} }', from_json(a)=Row(a='{"b":"rn"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"iw"} }', from_json(a)=Row(a='{"b":"iw"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"qh"} }', from_json(a)=Row(a='{"b":"qh"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"bp"} }', from_json(a)=Row(a='{"b":"bp"}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"jf"} }', from_json(a)=Row(a='{jf}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"jy"} }', from_json(a)=Row(a='{jy}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"wb"} }', from_json(a)=Row(a='{wb}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"mf"} }', from_json(a)=Row(a='{mf}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"nc"} }', from_json(a)=Row(a='{nc}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ie"} }', from_json(a)=Row(a='{ie}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ka"} }', from_json(a)=Row(a='{ka}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"jc"} }', from_json(a)=Row(a='{jc}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ag"} }', from_json(a)=Row(a='{ag}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"xt"} }', from_json(a)=Row(a='{xt}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"gi"} }', from_json(a)=Row(a='{gi}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ia"} }', from_json(a)=Row(a='{ia}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ac"} }', from_json(a)=Row(a='{ac}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"rf"} }', from_json(a)=Row(a='{rf}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"uq"} }', from_json(a)=Row(a='{uq}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"nc"} }', from_json(a)=Row(a='{nc}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"yp"} }', from_json(a)=Row(a='{yp}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"xm"} }', from_json(a)=Row(a='{xm}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"gu"} }', from_json(a)=Row(a='{gu}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"do"} }', from_json(a)=Row(a='{do}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ob"} }', from_json(a)=Row(a='{ob}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"bc"} }', from_json(a)=Row(a='{bc}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"hi"} }', from_json(a)=Row(a='{hi}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"rb"} }', from_json(a)=Row(a='{rb}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"yo"} }', from_json(a)=Row(a='{yo}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ay"} }', from_json(a)=Row(a='{ay}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"gs"} }', from_json(a)=Row(a='{gs}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"qa"} }', from_json(a)=Row(a='{qa}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"iv"} }', from_json(a)=Row(a='{iv}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"fj"} }', from_json(a)=Row(a='{fj}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"wq"} }', from_json(a)=Row(a='{wq}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"an"} }', from_json(a)=Row(a='{an}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"sl"} }', from_json(a)=Row(a='{sl}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"bp"} }', from_json(a)=Row(a='{bp}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"qp"} }', from_json(a)=Row(a='{qp}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"le"} }', from_json(a)=Row(a='{le}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"vk"} }', from_json(a)=Row(a='{vk}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"sn"} }', from_json(a)=Row(a='{sn}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"rn"} }', from_json(a)=Row(a='{rn}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"iw"} }', from_json(a)=Row(a='{iw}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"qh"} }', from_json(a)=Row(a='{qh}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"bp"} }', from_json(a)=Row(a='{bp}'))

[2024-01-31T20:47:58.664Z]  Row(a='{"a": {"b":"kt"} }', from_json(a)=Row(a='{"b":"kt"}'))

[2024-01-31T20:47:58.664Z]  Row(a=None, from_json(a)=None)

[2024-01-31T20:47:58.664Z]  Row(a='{"a": {"b":"lo"} }', from_json(a)=Row(a='{"b":"lo"}'))

[2024-01-31T20:47:58.664Z] @@ -1090,48 +1090,48 @@

[2024-01-31T20:47:58.664Z]  Row(a='{"a": {"b":"ja"} }', from_json(a)=Row(a='{"b":"ja"}'))

[2024-01-31T20:47:58.664Z]  Row(a='{"a": {"b":"ak"} }', from_json(a)=Row(a='{"b":"ak"}'))

[2024-01-31T20:47:58.664Z]  Row(a='{"a": {"b":"sr"} }', from_json(a)=Row(a='{"b":"sr"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"er"} }', from_json(a)=Row(a='{"b":"er"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"po"} }', from_json(a)=Row(a='{"b":"po"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"vb"} }', from_json(a)=Row(a='{"b":"vb"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"hs"} }', from_json(a)=Row(a='{"b":"hs"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"vf"} }', from_json(a)=Row(a='{"b":"vf"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"ap"} }', from_json(a)=Row(a='{"b":"ap"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"df"} }', from_json(a)=Row(a='{"b":"df"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"sz"} }', from_json(a)=Row(a='{"b":"sz"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"vn"} }', from_json(a)=Row(a='{"b":"vn"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"xh"} }', from_json(a)=Row(a='{"b":"xh"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"dx"} }', from_json(a)=Row(a='{"b":"dx"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"au"} }', from_json(a)=Row(a='{"b":"au"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"mb"} }', from_json(a)=Row(a='{"b":"mb"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"dx"} }', from_json(a)=Row(a='{"b":"dx"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"ei"} }', from_json(a)=Row(a='{"b":"ei"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"mv"} }', from_json(a)=Row(a='{"b":"mv"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"xv"} }', from_json(a)=Row(a='{"b":"xv"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"dq"} }', from_json(a)=Row(a='{"b":"dq"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"ba"} }', from_json(a)=Row(a='{"b":"ba"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"bj"} }', from_json(a)=Row(a='{"b":"bj"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"os"} }', from_json(a)=Row(a='{"b":"os"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"pf"} }', from_json(a)=Row(a='{"b":"pf"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"rn"} }', from_json(a)=Row(a='{"b":"rn"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"sh"} }', from_json(a)=Row(a='{"b":"sh"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"kn"} }', from_json(a)=Row(a='{"b":"kn"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"ui"} }', from_json(a)=Row(a='{"b":"ui"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"mu"} }', from_json(a)=Row(a='{"b":"mu"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"gi"} }', from_json(a)=Row(a='{"b":"gi"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"jg"} }', from_json(a)=Row(a='{"b":"jg"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"oq"} }', from_json(a)=Row(a='{"b":"oq"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"vx"} }', from_json(a)=Row(a='{"b":"vx"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"sa"} }', from_json(a)=Row(a='{"b":"sa"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"hv"} }', from_json(a)=Row(a='{"b":"hv"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"nl"} }', from_json(a)=Row(a='{"b":"nl"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"se"} }', from_json(a)=Row(a='{"b":"se"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"uc"} }', from_json(a)=Row(a='{"b":"uc"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"ut"} }', from_json(a)=Row(a='{"b":"ut"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"bk"} }', from_json(a)=Row(a='{"b":"bk"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"hv"} }', from_json(a)=Row(a='{"b":"hv"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"vx"} }', from_json(a)=Row(a='{"b":"vx"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"mn"} }', from_json(a)=Row(a='{"b":"mn"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"mj"} }', from_json(a)=Row(a='{"b":"mj"}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"er"} }', from_json(a)=Row(a='{er}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"po"} }', from_json(a)=Row(a='{po}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"vb"} }', from_json(a)=Row(a='{vb}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"hs"} }', from_json(a)=Row(a='{hs}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"vf"} }', from_json(a)=Row(a='{vf}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ap"} }', from_json(a)=Row(a='{ap}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"df"} }', from_json(a)=Row(a='{df}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"sz"} }', from_json(a)=Row(a='{sz}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"vn"} }', from_json(a)=Row(a='{vn}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"xh"} }', from_json(a)=Row(a='{xh}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"dx"} }', from_json(a)=Row(a='{dx}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"au"} }', from_json(a)=Row(a='{au}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"mb"} }', from_json(a)=Row(a='{mb}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"dx"} }', from_json(a)=Row(a='{dx}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ei"} }', from_json(a)=Row(a='{ei}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"mv"} }', from_json(a)=Row(a='{mv}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"xv"} }', from_json(a)=Row(a='{xv}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"dq"} }', from_json(a)=Row(a='{dq}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ba"} }', from_json(a)=Row(a='{ba}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"bj"} }', from_json(a)=Row(a='{bj}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"os"} }', from_json(a)=Row(a='{os}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"pf"} }', from_json(a)=Row(a='{pf}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"rn"} }', from_json(a)=Row(a='{rn}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"sh"} }', from_json(a)=Row(a='{sh}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"kn"} }', from_json(a)=Row(a='{kn}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ui"} }', from_json(a)=Row(a='{ui}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"mu"} }', from_json(a)=Row(a='{mu}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"gi"} }', from_json(a)=Row(a='{gi}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"jg"} }', from_json(a)=Row(a='{jg}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"oq"} }', from_json(a)=Row(a='{oq}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"vx"} }', from_json(a)=Row(a='{vx}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"sa"} }', from_json(a)=Row(a='{sa}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"hv"} }', from_json(a)=Row(a='{hv}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"nl"} }', from_json(a)=Row(a='{nl}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"se"} }', from_json(a)=Row(a='{se}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"uc"} }', from_json(a)=Row(a='{uc}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ut"} }', from_json(a)=Row(a='{ut}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"bk"} }', from_json(a)=Row(a='{bk}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"hv"} }', from_json(a)=Row(a='{hv}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"vx"} }', from_json(a)=Row(a='{vx}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"mn"} }', from_json(a)=Row(a='{mn}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"mj"} }', from_json(a)=Row(a='{mj}'))

[2024-01-31T20:47:58.664Z]  Row(a='{"a": {"b":"ki"} }', from_json(a)=Row(a='{"b":"ki"}'))

[2024-01-31T20:47:58.664Z]  Row(a='{"a": {"b":"cd"} }', from_json(a)=Row(a='{"b":"cd"}'))

[2024-01-31T20:47:58.664Z]  Row(a='{"a": {"b":"qs"} }', from_json(a)=Row(a='{"b":"qs"}'))

[2024-01-31T20:47:58.664Z] @@ -1594,48 +1594,48 @@

[2024-01-31T20:47:58.664Z]  Row(a='{"a": {"b":"km"} }', from_json(a)=Row(a='{"b":"km"}'))

[2024-01-31T20:47:58.664Z]  Row(a=None, from_json(a)=None)

[2024-01-31T20:47:58.664Z]  Row(a='{"a": {"b":"xt"} }', from_json(a)=Row(a='{"b":"xt"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"wq"} }', from_json(a)=Row(a='{"b":"wq"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"fa"} }', from_json(a)=Row(a='{"b":"fa"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"vh"} }', from_json(a)=Row(a='{"b":"vh"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"bs"} }', from_json(a)=Row(a='{"b":"bs"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"nr"} }', from_json(a)=Row(a='{"b":"nr"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"my"} }', from_json(a)=Row(a='{"b":"my"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"mf"} }', from_json(a)=Row(a='{"b":"mf"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"ai"} }', from_json(a)=Row(a='{"b":"ai"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"is"} }', from_json(a)=Row(a='{"b":"is"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"ow"} }', from_json(a)=Row(a='{"b":"ow"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"ih"} }', from_json(a)=Row(a='{"b":"ih"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"ts"} }', from_json(a)=Row(a='{"b":"ts"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"ns"} }', from_json(a)=Row(a='{"b":"ns"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"kj"} }', from_json(a)=Row(a='{"b":"kj"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"hb"} }', from_json(a)=Row(a='{"b":"hb"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"wz"} }', from_json(a)=Row(a='{"b":"wz"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"yz"} }', from_json(a)=Row(a='{"b":"yz"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"tf"} }', from_json(a)=Row(a='{"b":"tf"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"rj"} }', from_json(a)=Row(a='{"b":"rj"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"qv"} }', from_json(a)=Row(a='{"b":"qv"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"fr"} }', from_json(a)=Row(a='{"b":"fr"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"le"} }', from_json(a)=Row(a='{"b":"le"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"ex"} }', from_json(a)=Row(a='{"b":"ex"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"km"} }', from_json(a)=Row(a='{"b":"km"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"nq"} }', from_json(a)=Row(a='{"b":"nq"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"ki"} }', from_json(a)=Row(a='{"b":"ki"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"ky"} }', from_json(a)=Row(a='{"b":"ky"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"ui"} }', from_json(a)=Row(a='{"b":"ui"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"oo"} }', from_json(a)=Row(a='{"b":"oo"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"kd"} }', from_json(a)=Row(a='{"b":"kd"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"ud"} }', from_json(a)=Row(a='{"b":"ud"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"vg"} }', from_json(a)=Row(a='{"b":"vg"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"im"} }', from_json(a)=Row(a='{"b":"im"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"dh"} }', from_json(a)=Row(a='{"b":"dh"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"xe"} }', from_json(a)=Row(a='{"b":"xe"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"ky"} }', from_json(a)=Row(a='{"b":"ky"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"nm"} }', from_json(a)=Row(a='{"b":"nm"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"km"} }', from_json(a)=Row(a='{"b":"km"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"fh"} }', from_json(a)=Row(a='{"b":"fh"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"ca"} }', from_json(a)=Row(a='{"b":"ca"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"hu"} }', from_json(a)=Row(a='{"b":"hu"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"ql"} }', from_json(a)=Row(a='{"b":"ql"}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"wq"} }', from_json(a)=Row(a='{wq}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"fa"} }', from_json(a)=Row(a='{fa}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"vh"} }', from_json(a)=Row(a='{vh}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"bs"} }', from_json(a)=Row(a='{bs}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"nr"} }', from_json(a)=Row(a='{nr}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"my"} }', from_json(a)=Row(a='{my}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"mf"} }', from_json(a)=Row(a='{mf}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ai"} }', from_json(a)=Row(a='{ai}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"is"} }', from_json(a)=Row(a='{is}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ow"} }', from_json(a)=Row(a='{ow}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ih"} }', from_json(a)=Row(a='{ih}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ts"} }', from_json(a)=Row(a='{ts}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ns"} }', from_json(a)=Row(a='{ns}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"kj"} }', from_json(a)=Row(a='{kj}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"hb"} }', from_json(a)=Row(a='{hb}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"wz"} }', from_json(a)=Row(a='{wz}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"yz"} }', from_json(a)=Row(a='{yz}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"tf"} }', from_json(a)=Row(a='{tf}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"rj"} }', from_json(a)=Row(a='{rj}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"qv"} }', from_json(a)=Row(a='{qv}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"fr"} }', from_json(a)=Row(a='{fr}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"le"} }', from_json(a)=Row(a='{le}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ex"} }', from_json(a)=Row(a='{ex}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"km"} }', from_json(a)=Row(a='{km}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"nq"} }', from_json(a)=Row(a='{nq}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ki"} }', from_json(a)=Row(a='{ki}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ky"} }', from_json(a)=Row(a='{ky}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ui"} }', from_json(a)=Row(a='{ui}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"oo"} }', from_json(a)=Row(a='{oo}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"kd"} }', from_json(a)=Row(a='{kd}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ud"} }', from_json(a)=Row(a='{ud}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"vg"} }', from_json(a)=Row(a='{vg}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"im"} }', from_json(a)=Row(a='{im}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"dh"} }', from_json(a)=Row(a='{dh}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"xe"} }', from_json(a)=Row(a='{xe}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ky"} }', from_json(a)=Row(a='{ky}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"nm"} }', from_json(a)=Row(a='{nm}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"km"} }', from_json(a)=Row(a='{km}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"fh"} }', from_json(a)=Row(a='{fh}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ca"} }', from_json(a)=Row(a='{ca}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"hu"} }', from_json(a)=Row(a='{hu}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ql"} }', from_json(a)=Row(a='{ql}'))

[2024-01-31T20:47:58.664Z]  Row(a='{"a": {"b":"vr"} }', from_json(a)=Row(a='{"b":"vr"}'))

[2024-01-31T20:47:58.664Z]  Row(a='{"a": {"b":"ox"} }', from_json(a)=Row(a='{"b":"ox"}'))

[2024-01-31T20:47:58.664Z]  Row(a='{"a": {"b":"ro"} }', from_json(a)=Row(a='{"b":"ro"}'))

[2024-01-31T20:47:58.664Z] @@ -1804,48 +1804,48 @@

[2024-01-31T20:47:58.664Z]  Row(a='{"a": {"b":"mg"} }', from_json(a)=Row(a='{"b":"mg"}'))

[2024-01-31T20:47:58.664Z]  Row(a='{"a": {"b":"ul"} }', from_json(a)=Row(a='{"b":"ul"}'))

[2024-01-31T20:47:58.664Z]  Row(a='{"a": {"b":"pp"} }', from_json(a)=Row(a='{"b":"pp"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"rv"} }', from_json(a)=Row(a='{"b":"rv"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"ua"} }', from_json(a)=Row(a='{"b":"ua"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"fg"} }', from_json(a)=Row(a='{"b":"fg"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"xs"} }', from_json(a)=Row(a='{"b":"xs"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"bm"} }', from_json(a)=Row(a='{"b":"bm"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"hc"} }', from_json(a)=Row(a='{"b":"hc"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"iy"} }', from_json(a)=Row(a='{"b":"iy"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"ly"} }', from_json(a)=Row(a='{"b":"ly"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"sl"} }', from_json(a)=Row(a='{"b":"sl"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"tn"} }', from_json(a)=Row(a='{"b":"tn"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"bj"} }', from_json(a)=Row(a='{"b":"bj"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"fu"} }', from_json(a)=Row(a='{"b":"fu"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"sl"} }', from_json(a)=Row(a='{"b":"sl"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"gv"} }', from_json(a)=Row(a='{"b":"gv"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"pk"} }', from_json(a)=Row(a='{"b":"pk"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"au"} }', from_json(a)=Row(a='{"b":"au"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"mp"} }', from_json(a)=Row(a='{"b":"mp"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"sc"} }', from_json(a)=Row(a='{"b":"sc"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"ob"} }', from_json(a)=Row(a='{"b":"ob"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"ys"} }', from_json(a)=Row(a='{"b":"ys"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"yt"} }', from_json(a)=Row(a='{"b":"yt"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"aa"} }', from_json(a)=Row(a='{"b":"aa"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"jg"} }', from_json(a)=Row(a='{"b":"jg"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"dl"} }', from_json(a)=Row(a='{"b":"dl"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"qa"} }', from_json(a)=Row(a='{"b":"qa"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"zr"} }', from_json(a)=Row(a='{"b":"zr"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"gp"} }', from_json(a)=Row(a='{"b":"gp"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"xj"} }', from_json(a)=Row(a='{"b":"xj"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"sn"} }', from_json(a)=Row(a='{"b":"sn"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"zk"} }', from_json(a)=Row(a='{"b":"zk"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"sc"} }', from_json(a)=Row(a='{"b":"sc"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"fu"} }', from_json(a)=Row(a='{"b":"fu"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"hg"} }', from_json(a)=Row(a='{"b":"hg"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"un"} }', from_json(a)=Row(a='{"b":"un"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"dw"} }', from_json(a)=Row(a='{"b":"dw"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"hq"} }', from_json(a)=Row(a='{"b":"hq"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"yl"} }', from_json(a)=Row(a='{"b":"yl"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"lz"} }', from_json(a)=Row(a='{"b":"lz"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"oe"} }', from_json(a)=Row(a='{"b":"oe"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"nw"} }', from_json(a)=Row(a='{"b":"nw"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"dh"} }', from_json(a)=Row(a='{"b":"dh"}'))

[2024-01-31T20:47:58.664Z] -Row(a='{"a": {"b":"jp"} }', from_json(a)=Row(a='{"b":"jp"}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"rv"} }', from_json(a)=Row(a='{rv}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ua"} }', from_json(a)=Row(a='{ua}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"fg"} }', from_json(a)=Row(a='{fg}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"xs"} }', from_json(a)=Row(a='{xs}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"bm"} }', from_json(a)=Row(a='{bm}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"hc"} }', from_json(a)=Row(a='{hc}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"iy"} }', from_json(a)=Row(a='{iy}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ly"} }', from_json(a)=Row(a='{ly}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"sl"} }', from_json(a)=Row(a='{sl}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"tn"} }', from_json(a)=Row(a='{tn}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"bj"} }', from_json(a)=Row(a='{bj}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"fu"} }', from_json(a)=Row(a='{fu}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"sl"} }', from_json(a)=Row(a='{sl}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"gv"} }', from_json(a)=Row(a='{gv}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"pk"} }', from_json(a)=Row(a='{pk}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"au"} }', from_json(a)=Row(a='{au}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"mp"} }', from_json(a)=Row(a='{mp}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"sc"} }', from_json(a)=Row(a='{sc}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ob"} }', from_json(a)=Row(a='{ob}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"ys"} }', from_json(a)=Row(a='{ys}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"yt"} }', from_json(a)=Row(a='{yt}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"aa"} }', from_json(a)=Row(a='{aa}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"jg"} }', from_json(a)=Row(a='{jg}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"dl"} }', from_json(a)=Row(a='{dl}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"qa"} }', from_json(a)=Row(a='{qa}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"zr"} }', from_json(a)=Row(a='{zr}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"gp"} }', from_json(a)=Row(a='{gp}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"xj"} }', from_json(a)=Row(a='{xj}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"sn"} }', from_json(a)=Row(a='{sn}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"zk"} }', from_json(a)=Row(a='{zk}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"sc"} }', from_json(a)=Row(a='{sc}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"fu"} }', from_json(a)=Row(a='{fu}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"hg"} }', from_json(a)=Row(a='{hg}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"un"} }', from_json(a)=Row(a='{un}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"dw"} }', from_json(a)=Row(a='{dw}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"hq"} }', from_json(a)=Row(a='{hq}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"yl"} }', from_json(a)=Row(a='{yl}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"lz"} }', from_json(a)=Row(a='{lz}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"oe"} }', from_json(a)=Row(a='{oe}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"nw"} }', from_json(a)=Row(a='{nw}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"dh"} }', from_json(a)=Row(a='{dh}'))

[2024-01-31T20:47:58.664Z] +Row(a='{"a": {"b":"jp"} }', from_json(a)=Row(a='{jp}'))

[2024-01-31T20:47:58.664Z]  Row(a='{"a": {"b":"dt"} }', from_json(a)=Row(a='{"b":"dt"}'))

[2024-01-31T20:47:58.664Z]  Row(a='{"a": {"b":"ql"} }', from_json(a)=Row(a='{"b":"ql"}'))

[2024-01-31T20:47:58.664Z]  Row(a='{"a": {"b":"gw"} }', from_json(a)=Row(a='{"b":"gw"}'))

@andygrove
Copy link
Contributor

The output shows that an input of {"a": {"b":"md"} } produces the same results between CPU and GPU:

[2024-01-31T20:47:58.663Z]  Row(a='{"a": {"b":"md"} }', from_json(a)=Row(a='{"b":"md"}'))

But an almost identical input of {"a": {"b":"mh"} } produces different results between CPU and GPU:

[2024-01-31T20:47:58.663Z] -Row(a='{"a": {"b":"mh"} }', from_json(a)=Row(a='{"b":"mh"}'))
[2024-01-31T20:47:58.663Z] +Row(a='{"a": {"b":"mh"} }', from_json(a)=Row(a='{mh}'))

I have been unable to reproduce this so far with Spark 3.3.0, even using the same datagen seed.

However, a manual test does show differences between CPU and GPU, but does not match the results from the failed CI run exactly.

scala> val df = Seq("""{"a": {"b":"md"} }""", """{"a": {"b":"mh"} }""").toDF("json").repartition(2)
scala> spark.conf.set("spark.rapids.sql.expression.JsonToStructs", true)
scala> spark.conf.set("spark.rapids.sql.json.read.mixedTypesAsString.enabled", true)
scala> import org.apache.spark.sql.types._
scala> val schema = StructType(Seq(StructField("a", DataTypes.StringType, true)))
scala> df.select(col("json"), from_json(col("json"), schema)).show

GPU output

+------------------+---------------+
|              json|from_json(json)|
+------------------+---------------+
|{"a": {"b":"md"} }|         {{md}}|
|{"a": {"b":"mh"} }|         {{mh}}|
+------------------+---------------+

CPU Output

+------------------+---------------+
|              json|from_json(json)|
+------------------+---------------+
|{"a": {"b":"md"} }|   {{"b":"md"}}|
|{"a": {"b":"mh"} }|   {{"b":"mh"}}|
+------------------+---------------+

@andygrove andygrove self-assigned this Jan 31, 2024
@jlowe
Copy link
Member Author

jlowe commented Jan 31, 2024

Note that this failure was from a distributed cluster setup, so the nature of the failure may have something to do with how the input data is partitioned across tasks. That particular distribution is probably not replicated in the default local run environment.

@andygrove
Copy link
Contributor

Also, my manual test is using show ... if I run collect then I do see the same results. I think the show issue is already known under issue #8558

@andygrove
Copy link
Contributor

Note that this failure was from a distributed cluster setup, so the nature of the failure may have something to do with how the input data is partitioned across tasks. That particular distribution is probably not replicated in the default local run environment.

So if some partitions contain mixed types and some don't ... I will try and repro that in an integration test.

I will create a PR to xfail this test while I investigate.

@sameerz sameerz added cudf_dependency An issue or PR with this label depends on a new feature in cudf and removed ? - Needs Triage Need team to review and classify labels Feb 1, 2024
@sameerz
Copy link
Collaborator

sameerz commented Feb 5, 2024

Depends on rapidsai/cudf#14830

@andygrove andygrove assigned revans2 and unassigned andygrove Apr 1, 2024
@revans2
Copy link
Collaborator

revans2 commented Apr 10, 2024

The test code from the comment in #10351 (comment) now works, but the test itself still fails because it needs support for LISTs not just STRUCTs.

rapidsai/cudf#15278

is the issue we want/need fixed for this to start passing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working cudf_dependency An issue or PR with this label depends on a new feature in cudf
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants