Back to home page

OSCL-LXR

 
 

    


0001 #
0002 # Licensed to the Apache Software Foundation (ASF) under one or more
0003 # contributor license agreements.  See the NOTICE file distributed with
0004 # this work for additional information regarding copyright ownership.
0005 # The ASF licenses this file to You under the Apache License, Version 2.0
0006 # (the "License"); you may not use this file except in compliance with
0007 # the License.  You may obtain a copy of the License at
0008 #
0009 #    http://www.apache.org/licenses/LICENSE-2.0
0010 #
0011 # Unless required by applicable law or agreed to in writing, software
0012 # distributed under the License is distributed on an "AS IS" BASIS,
0013 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
0014 # See the License for the specific language governing permissions and
0015 # limitations under the License.
0016 #
0017 
0018 from pyspark.sql import Row
0019 from pyspark.testing.sqlutils import ReusedSQLTestCase
0020 
0021 
0022 class GroupTests(ReusedSQLTestCase):
0023 
0024     def test_aggregator(self):
0025         df = self.df
0026         g = df.groupBy()
0027         self.assertEqual([99, 100], sorted(g.agg({'key': 'max', 'value': 'count'}).collect()[0]))
0028         self.assertEqual([Row(**{"AVG(key#0)": 49.5})], g.mean().collect())
0029 
0030         from pyspark.sql import functions
0031         self.assertEqual((0, u'99'),
0032                          tuple(g.agg(functions.first(df.key), functions.last(df.value)).first()))
0033         self.assertTrue(95 < g.agg(functions.approx_count_distinct(df.key)).first()[0])
0034         self.assertEqual(100, g.agg(functions.countDistinct(df.value)).first()[0])
0035 
0036 
0037 if __name__ == "__main__":
0038     import unittest
0039     from pyspark.sql.tests.test_group import *
0040 
0041     try:
0042         import xmlrunner
0043         testRunner = xmlrunner.XMLTestRunner(output='target/test-reports', verbosity=2)
0044     except ImportError:
0045         testRunner = None
0046     unittest.main(testRunner=testRunner, verbosity=2)