Search in sources :

Example 11 with SqlSchema

use of org.apache.samza.sql.schema.SqlSchema in project samza by apache.

the class SamzaExecutor method executeQuery.

@Override
public QueryResult executeQuery(ExecutionContext context, String statement) throws ExecutorException {
    outputData.clear();
    int execId = execIdSeq.incrementAndGet();
    Map<String, String> staticConfigs = fetchSamzaSqlConfig(execId);
    List<String> sqlStmts = formatSqlStmts(Collections.singletonList(statement));
    staticConfigs.put(SamzaSqlApplicationConfig.CFG_SQL_STMTS_JSON, JsonUtil.toJson(sqlStmts));
    SamzaSqlApplicationRunner runner;
    try {
        runner = new SamzaSqlApplicationRunner(true, new MapConfig(staticConfigs));
        runner.run(null);
    } catch (SamzaException ex) {
        throw new ExecutorException(ex);
    }
    executions.put(execId, runner);
    LOG.debug("Executing sql. Id ", execId);
    SqlSchema resultSchema = null;
    // resultSchema = generateResultSchema(new MapConfig(staticConfigs));
    return new QueryResult(execId, resultSchema);
}
Also used : ExecutorException(org.apache.samza.sql.client.exceptions.ExecutorException) SamzaSqlApplicationRunner(org.apache.samza.sql.runner.SamzaSqlApplicationRunner) SqlSchema(org.apache.samza.sql.schema.SqlSchema) SamzaException(org.apache.samza.SamzaException)

Example 12 with SqlSchema

use of org.apache.samza.sql.schema.SqlSchema in project samza by apache.

the class SamzaExecutorTest method testGetTableSchema.

@Test
public void testGetTableSchema() throws ExecutorException {
    prepareEnvironmentVariable();
    SqlSchema ts = mExecutor.getTableSchema(new ExecutionContext(), "kafka.ProfileChangeStream");
    List<SqlSchema.SqlField> fields = ts.getFields();
    Assert.assertEquals("Name", fields.get(0).getFieldName());
    Assert.assertEquals("NewCompany", fields.get(1).getFieldName());
    Assert.assertEquals("OldCompany", fields.get(2).getFieldName());
    Assert.assertEquals("ProfileChangeTimestamp", fields.get(3).getFieldName());
    Assert.assertEquals("STRING", fields.get(0).getFieldSchema().getFieldType().toString());
    Assert.assertEquals("STRING", fields.get(1).getFieldSchema().getFieldType().toString());
    Assert.assertEquals("STRING", fields.get(2).getFieldSchema().getFieldType().toString());
    Assert.assertEquals("INT64", fields.get(3).getFieldSchema().getFieldType().toString());
}
Also used : ExecutionContext(org.apache.samza.sql.client.interfaces.ExecutionContext) SqlSchema(org.apache.samza.sql.schema.SqlSchema) Test(org.junit.Test)

Example 13 with SqlSchema

use of org.apache.samza.sql.schema.SqlSchema in project samza by apache.

the class AvroTypeFactoryImpl method convertField.

private SqlFieldSchema convertField(Schema fieldSchema, boolean isNullable, boolean isOptional) {
    switch(fieldSchema.getType()) {
        case ARRAY:
            SqlFieldSchema elementSchema = convertField(fieldSchema.getElementType(), false, false);
            return SqlFieldSchema.createArraySchema(elementSchema, isNullable, isOptional);
        case BOOLEAN:
            return SqlFieldSchema.createPrimitiveSchema(SamzaSqlFieldType.BOOLEAN, isNullable, isOptional);
        case DOUBLE:
            return SqlFieldSchema.createPrimitiveSchema(SamzaSqlFieldType.DOUBLE, isNullable, isOptional);
        case FLOAT:
            // Avro FLOAT is 4 bytes which maps to Sql REAL. Sql FLOAT is 8-bytes
            return SqlFieldSchema.createPrimitiveSchema(SamzaSqlFieldType.REAL, isNullable, isOptional);
        case ENUM:
            return SqlFieldSchema.createPrimitiveSchema(SamzaSqlFieldType.STRING, isNullable, isOptional);
        case UNION:
            return getSqlTypeFromUnionTypes(fieldSchema.getTypes(), isNullable, isOptional);
        case FIXED:
            return SqlFieldSchema.createPrimitiveSchema(SamzaSqlFieldType.BYTES, isNullable, isOptional);
        case STRING:
            return SqlFieldSchema.createPrimitiveSchema(SamzaSqlFieldType.STRING, isNullable, isOptional);
        case BYTES:
            return SqlFieldSchema.createPrimitiveSchema(SamzaSqlFieldType.BYTES, isNullable, isOptional);
        case INT:
            return SqlFieldSchema.createPrimitiveSchema(SamzaSqlFieldType.INT32, isNullable, isOptional);
        case LONG:
            return SqlFieldSchema.createPrimitiveSchema(SamzaSqlFieldType.INT64, isNullable, isOptional);
        case RECORD:
            SqlSchema rowSchema = convertSchema(fieldSchema.getFields(), false);
            return SqlFieldSchema.createRowFieldSchema(rowSchema, isNullable, isOptional);
        case MAP:
            // Can the value type be nullable and have default values ? Guess not!
            SqlFieldSchema valueType = convertField(fieldSchema.getValueType(), false, false);
            return SqlFieldSchema.createMapSchema(valueType, isNullable, isOptional);
        default:
            String msg = String.format("Field Type %s is not supported", fieldSchema.getType());
            LOG.error(msg);
            throw new SamzaException(msg);
    }
}
Also used : SqlFieldSchema(org.apache.samza.sql.schema.SqlFieldSchema) SqlSchema(org.apache.samza.sql.schema.SqlSchema) SamzaException(org.apache.samza.SamzaException)

Aggregations

SqlSchema (org.apache.samza.sql.schema.SqlSchema)13 SqlFieldSchema (org.apache.samza.sql.schema.SqlFieldSchema)4 SamzaException (org.apache.samza.SamzaException)3 Test (org.junit.Test)3 ArrayList (java.util.ArrayList)2 RelDataType (org.apache.calcite.rel.type.RelDataType)2 RelRecordType (org.apache.calcite.rel.type.RelRecordType)2 ExecutorException (org.apache.samza.sql.client.exceptions.ExecutorException)2 Map (java.util.Map)1 Schema (org.apache.avro.Schema)1 ByteString (org.apache.calcite.avatica.util.ByteString)1 RelRoot (org.apache.calcite.rel.RelRoot)1 LogicalProject (org.apache.calcite.rel.logical.LogicalProject)1 RelDataTypeField (org.apache.calcite.rel.type.RelDataTypeField)1 MapConfig (org.apache.samza.config.MapConfig)1 ExecutionContext (org.apache.samza.sql.client.interfaces.ExecutionContext)1 SamzaSqlDslConverter (org.apache.samza.sql.dsl.SamzaSqlDslConverter)1 SamzaSqlDslConverterFactory (org.apache.samza.sql.dsl.SamzaSqlDslConverterFactory)1 RelSchemaProvider (org.apache.samza.sql.interfaces.RelSchemaProvider)1 SqlIOConfig (org.apache.samza.sql.interfaces.SqlIOConfig)1