我写了一个简单的猪脚本,它从2个文件中读取数据作为avro记录。然后我根据两个文件的ID对它们进行连接。示例sample.pig
:
sample1 = LOAD '/dumpedFromAnotherPigScript' using AvroStorage();
sample2 = LOAD '/fromExistingFile' using AvroStorage();
describe sample1;
sample1: {rootObjectId: chararray, orderId: long}
describe sample2;
sample2: {objectId: chararray, name: chararray}
joined = join sample2 by objectId, sample1 by rootObjectId;
store joined into '/joinedpath';
当我像这样进行连接时,在执行PigSchema2Avro.convertRecord()
时会收到SchemaParseException。异常消息为:Illegal character in: sample2::objectId
只有在我尝试加入时才会发生这种情况。我只是做转储时工作正常。此外,sample1实际上是从一个文件加载的,该文件的内容是使用first-sample.pig
从另一个猪脚本AvroStorage
填充的。 sample2从包含avro记录的现有文件加载。奇怪的是,如果我不将first-sample.pig
中的记录存储到/dumpedFromAnotherPigScript
位置并直接合并sample.pig
脚本,那么一切正常。我无法理解这里的区别。有线索吗?