google-bigqueryにアップロードするための有効なavroファイルを作成しようとしています。有効なAvro形式のファイルnodejsを作成するには
var avro = require('node-avro-io').DataFile.AvroFile();
var schema = {
"name": "data",
"type": "record",
"fields": [
{"name":"key","type": "string"},
{"name":"value","type": "string"},
{"name":"flag","type": "boolean"},
{"name":"subrecord","type":"record","fields":[
{"name":"key","type":"string"},
{"name":"value","type":["string","int","null"]}
]}
]
};
var writer = avro.open("myAvroFile.avro", schema, { flags: 'w' , codec: 'deflate'});
writer
.append({ key:"john", value:"hive", flag: true, subrecord: { key: "preference", value: 2}})
.append({ key:"eric", value:"lola", flag: true, subrecord: { key: "postcode", value: null}})
.end({ key:"fred", value:"wonka", flag: false, subrecord: { key: "city", value: "michigan"}});
、ここmyAvroFile.avro
です:
Obj�avro.codec�deflate�avro.schema�{"name":"data","type":"record","fields":[{"name":"key","type":"string"},{"name":"value","type":"string"},{"name":"flag","type":"boolean"},{"name":"subrecord","type":"record","fields":[{"name":"key","type":"string"},{"name":"value","type":["string","int","null"]}]}]} �3�ä0�x���A� @0O�)�T�%H4��:�*Uy�>P0��%�05k��n�d�T�������\����I�3�ä0�x�
が、私はそれが失敗したビッグクエリにそれをアップロードしてみてください。私は以下から解凍したアブロFLIをアップロードしようとすると、
The Apache Avro library failed to parse file
リンク私は成功する。 https://cloud.google.com/bigquery/docs/yob1900.avro.zip
何故かmyAvroFile.avro
は有効ではありませんか? node-avro-io
ライブラリを使用して有効なavroファイルを作成するにはどうすればよいですか?
わかりません。あなたがgoogle.comのhuazhangで私にそれを電子メールで送ることができるなら、私は一見することができます。 –
はい、それは問題です。入れ子にされたフィールドを削除すると、うまく動作します。 – dina