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)
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)
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)