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);
}
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());
}
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);
}
}
Aggregations