Example #1
0
static int read_data_datum() {
	int rval;
	int records_read = 0;

	avro_file_reader_t reader;
	avro_datum_t datum;

	fprintf(stderr, "\nReading...\n");

	rval = avro_file_reader(filename, &reader);

	if (rval) {
		fprintf(stderr, "Error using 'datum': %s\n", avro_strerror());
		return -1;
	}

	avro_schema_t schema = avro_file_reader_get_writer_schema(reader);

	while ((rval = avro_file_reader_read(reader, schema, &datum)) == 0) {
		avro_datum_t val_datum;
		int32_t val;
		if (avro_record_get(datum, "ab", &val_datum)) {
			fprintf(stderr, "Error getting value: %s\n", avro_strerror());
			return -1;
		}
		avro_int32_get(val_datum, &val);
		fprintf(stderr, "value = %d\n", val);
		records_read++;
		avro_datum_decref(datum);
	}

	avro_schema_decref(schema);
	avro_file_reader_close(reader);

	fprintf(stderr, "read %d records using 'datum'.\n", records_read);

	if (rval != EOF) {
		fprintf(stderr, "Error using 'datum': %s\n", avro_strerror());
		return -1;
	}

	return records_read;
}
Example #2
0
/*输出数据库中的学生信息*/
int show_student(avro_file_reader_t db,
                 avro_schema_t reader_schema)
{
    int rval;
    avro_datum_t student;

    rval = avro_file_reader_read(db, reader_schema, &student);

    if (rval == 0) {
        int64_t i64;
        int32_t i32;
        char *p;
        avro_datum_t sid_datum, name_datum, dept_datum,
                     phone_datum, age_datum;

        if (avro_record_get(student, "SID", &sid_datum) == 0) {
            avro_int64_get(sid_datum, &i64);
            fprintf(stdout, "%"PRId64"  ", i64);
        }
        if (avro_record_get(student, "Name", &name_datum) == 0) {
            avro_string_get(name_datum, &p);
            fprintf(stdout, "%12s  ", p);
        }
        if (avro_record_get(student, "Dept", &dept_datum) == 0) {
            avro_string_get(dept_datum, &p);
            fprintf(stdout, "%12s  ", p);
        }
        if (avro_record_get(student, "Phone", &phone_datum) == 0) {
            avro_string_get(phone_datum, &p);
            fprintf(stdout, "%12s  ", p);
        }
        if (avro_record_get(student, "Age", &age_datum) == 0) {
            avro_int32_get(age_datum, &i32);
            fprintf(stdout, "%d", i32);
        }
        fprintf(stdout, "\n");

        /*释放记录*/
        avro_datum_decref(student);
    }
    return rval;
}
Example #3
0
int main(int argc, char *argv[])
{
	int rval;
	avro_file_writer_t file_writer;
	avro_file_reader_t file_reader;
	char outpath[128];
	FILE *fp;
	char jsontext[16 * 1024];
	avro_schema_t schema;
	avro_schema_error_t schema_error;
	avro_datum_t interop;
	avro_datum_t array_datum;
	avro_datum_t node_datum;
	avro_datum_t union_datum;
	avro_datum_t out_datum;
	enum Kind {
		KIND_A,
		KIND_B,
		KIND_C
	};

	if (argc != 3) {
		exit(EXIT_FAILURE);
	}
	snprintf(outpath, sizeof(outpath), "%s/c.avro", argv[2]);
	fprintf(stderr, "Writing to %s\n", outpath);

	fp = fopen(argv[1], "r");
	rval = fread(jsontext, 1, sizeof(jsontext) - 1, fp);
	jsontext[rval] = '\0';

	check(rval,
	      avro_schema_from_json(jsontext, rval, &schema, &schema_error));
	check(rval, avro_file_writer_create(outpath, schema, &file_writer));

	/* TODO: create a method for generating random data from schema */
	interop = avro_record("Interop", "org.apache.avro");
	avro_record_set(interop, "intField", avro_int32(42));
	avro_record_set(interop, "longField", avro_int64(4242));
	avro_record_set(interop, "stringField",
			avro_wrapstring("Follow your bliss."));
	avro_record_set(interop, "boolField", avro_boolean(1));
	avro_record_set(interop, "floatField", avro_float(3.14159265));
	avro_record_set(interop, "doubleField", avro_double(2.71828183));
	avro_record_set(interop, "bytesField", avro_bytes("abcd", 4));
	avro_record_set(interop, "nullField", avro_null());

	array_datum = avro_array();
	avro_array_append_datum(array_datum, avro_double(1.0));
	avro_array_append_datum(array_datum, avro_double(2.0));
	avro_array_append_datum(array_datum, avro_double(3.0));
	avro_record_set(interop, "arrayField", array_datum);

	avro_record_set(interop, "mapField", avro_map());
	union_datum = avro_union(1, avro_double(1.61803399));
	avro_record_set(interop, "unionField", union_datum);
	avro_record_set(interop, "enumField", avro_enum("Kind", KIND_A));
	avro_record_set(interop, "fixedField",
			avro_fixed("MD5", "1234567890123456", 16));

	node_datum = avro_record("Node", NULL);
	avro_record_set(node_datum, "label",
			avro_wrapstring("If you label me, you negate me."));
	avro_record_set(node_datum, "children", avro_array());
	avro_record_set(interop, "recordField", node_datum);

	rval = avro_file_writer_append(file_writer, interop);
	if (rval) {
		fprintf(stderr, "Unable to append data to interop file!\n");
		exit(EXIT_FAILURE);
	} else {
		fprintf(stderr, "Successfully appended datum to file\n");
	}

	check(rval, avro_file_writer_close(file_writer));
	fprintf(stderr, "Closed writer.\n");

	check(rval, avro_file_reader(outpath, &file_reader));
	fprintf(stderr, "Re-reading datum to verify\n");
	check(rval, avro_file_reader_read(file_reader, NULL, &out_datum));
	fprintf(stderr, "Verifying datum...");
	if (!avro_datum_equal(interop, out_datum)) {
		fprintf(stderr, "fail!\n");
		exit(EXIT_FAILURE);
	}
	fprintf(stderr, "ok\n");
	check(rval, avro_file_reader_close(file_reader));
	fprintf(stderr, "Closed reader.\n");
	return 0;
}