示例#1
0
    def test_kudu_schema_convert(self):
        spec = [
            # name, type, is_nullable, is_primary_key
            ('a', dt.Int8(False), 'int8', False, True),
            ('b', dt.Int16(False), 'int16', False, True),
            ('c', dt.Int32(False), 'int32', False, False),
            ('d', dt.Int64(True), 'int64', True, False),
            ('e', dt.String(True), 'string', True, False),
            ('f', dt.Boolean(False), 'bool', False, False),
            ('g', dt.Float(False), 'float', False, False),
            ('h', dt.Double(True), 'double', True, False),

            # TODO
            # ('i', 'binary', False, False),
            ('j', dt.Timestamp(True), 'timestamp', True, False)
        ]

        builder = kudu.schema_builder()
        primary_keys = []
        ibis_types = []
        for name, itype, type_, is_nullable, is_primary_key in spec:
            builder.add_column(name, type_, nullable=is_nullable)

            if is_primary_key:
                primary_keys.append(name)

            ibis_types.append((name, itype))

        builder.set_primary_keys(primary_keys)
        kschema = builder.build()

        ischema = ksupport.schema_kudu_to_ibis(kschema)
        expected = ibis.schema(ibis_types)

        assert_equal(ischema, expected)
示例#2
0
    def test_external_kudu_table(self):
        kschema = self.example_schema()
        kudu_name = self._new_kudu_example_table(kschema)

        nrows = 100
        self._write_example_data(kudu_name, nrows)

        table = self.con.kudu.table(kudu_name)
        result = table.execute()
        assert len(result) == 100

        ischema = ksupport.schema_kudu_to_ibis(kschema, drop_nn=True)
        assert_equal(table.schema(), ischema)
示例#3
0
    def test_external_kudu_table(self):
        kschema = self.example_schema()
        kudu_name = self._new_kudu_example_table(kschema)

        nrows = 100
        self._write_example_data(kudu_name, nrows)

        table = self.con.kudu.table(kudu_name)
        result = table.execute()
        assert len(result) == 100

        ischema = ksupport.schema_kudu_to_ibis(kschema, drop_nn=True)
        assert_equal(table.schema(), ischema)
示例#4
0
    def test_create_empty_internal_table(self):
        kschema = self.example_schema()
        ischema = ksupport.schema_kudu_to_ibis(kschema, drop_nn=True)

        impala_name = self._temp_impala_name()
        kudu_name = 'ibis-empty-{0}'.format(util.guid())

        self.con.kudu.create_table(impala_name, kudu_name,
                                   primary_keys=['key'],
                                   schema=ischema,
                                   database=self.env.test_data_db)

        ktable = self.kclient.table(kudu_name)
        assert ktable.schema.equals(kschema)
        self.temp_tables.append(kudu_name)
示例#5
0
    def test_create_empty_internal_table(self):
        kschema = self.example_schema()
        ischema = ksupport.schema_kudu_to_ibis(kschema, drop_nn=True)

        impala_name = self._temp_impala_name()
        kudu_name = 'ibis-empty-{0}'.format(util.guid())

        self.con.kudu.create_table(impala_name,
                                   kudu_name,
                                   primary_keys=['key'],
                                   schema=ischema,
                                   database=self.env.test_data_db)

        ktable = self.kclient.table(kudu_name)
        assert ktable.schema.equals(kschema)
        self.temp_tables.append(kudu_name)
示例#6
0
    def test_kudu_schema_convert(self):
        spec = [
            # name, type, is_nullable, is_primary_key
            ('a', dt.Int8(False), 'int8', False, True),
            ('b', dt.Int16(False), 'int16', False, True),
            ('c', dt.Int32(False), 'int32', False, False),
            ('d', dt.Int64(True), 'int64', True, False),
            ('e', dt.String(True), 'string', True, False),
            ('f', dt.Boolean(False), 'bool', False, False),
            ('g', dt.Float(False), 'float', False, False),
            ('h', dt.Double(True), 'double', True, False),

            # TODO
            # ('i', 'binary', False, False),

            ('j', dt.Timestamp(True), 'timestamp', True, False)
        ]

        builder = kudu.schema_builder()
        primary_keys = []
        ibis_types = []
        for name, itype, type_, is_nullable, is_primary_key in spec:
            builder.add_column(name, type_, nullable=is_nullable)

            if is_primary_key:
                primary_keys.append(name)

            ibis_types.append((name, itype))

        builder.set_primary_keys(primary_keys)
        kschema = builder.build()

        ischema = ksupport.schema_kudu_to_ibis(kschema)
        expected = ibis.schema(ibis_types)

        assert_equal(ischema, expected)