выходная схема с использованием Python UDF в Apache PIG - PullRequest
0 голосов
/ 04 февраля 2019

My python udf возвращает список кортежей, подобный следующему:

[(0.01, 12), (0.02, 6), (0.03, 12), (0.04, 19), (0.05, 29), (0.06, 42)]

Вышеприведенный текст распечатывается и копируется из стандартного вывода mapper.

Два значения в кортежах приводятся кfloat и int соответственно.Я также распечатал тип, и он действительно правильно приведен.

(<type 'float'>, <type 'int'>)

Вот декоратор @outputSchema("stats:bag{improvement:tuple(percent:float,entityCount:int)}")

Вот сообщение об ошибке:

Ошибка: java.io.IOException: org.apache.avro.file.DataFileWriter $ AppendWriteException: java.lang.RuntimeException: элемент данных (0,01,12) не находится в объединении ["null", {"type": "record", "name": "TUPLE_1", "fields": [{"name": "cent "," type ": [" null "," float "]," doc ":" автоматически сгенерированный из схемы поля Pig "," default ": null}, {" name ":" entityCount ", "type": ["null", "int"], "doc": "автоматически сгенерированный из схемы поля Pig", "default": null}]}] в org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigGenericMapReduce $ Reduce.runPipeline (PigGenericMapReduce.java:479) в org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigGenericMapReduce $.executionengine.mapReduceLayer.PigGenericMapReduce $ Reduce.reduce (PigGenericMapReduce.java:422) в org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigGenericRuce $ Reduce.reduce (PigGenericMapReduce.java:269) в org.apache.hadoop.mapreduce.Reducer.run (Reducer.java:171) в org.apache.hadoop.mapred.ReduceTask.runNewReducer.Rasece6: Reduceв org.apache.hadoop.mapred.ReduceTask.run (ReduceTask.java:389) в org.apache.hadoop.mapred.YarnChild $ 2.run (YarnChild.java:164) в java.security.AccessController.doPrivileged (собственный)) в javax.security.auth.Subject.doAs (Subject.java:422) в org.apache.hadoop.security.UserGroupInformation.doAs (UserGroupInformation.java:1754) в org.apache.hadoop.mapred.YarnChild.main (YarnChild.java:158) Причина: org.apache.avro.file.DataFileWriter $ AppendWriteException: java.lang.RuntimeException: элемент данных (0,01,12) не находится в объединении ["null", {"type": "record", "name": "TUPLE_1", "fields": [{"name": "cent "," type ": [" null "," float "]," doc ":" автоматически сгенерировано из схемы поля Pig ","default ": null}, {" name ":" entityCount "," type ": [" null "," int "]," doc ":" автоматически сгенерированный из схемы поля Pig "," default ": null}]}]в org.apache.avro.file.DataFileWriter.append (DataFileWriter.java:263) по адресу org.apache.pig.piggybank.storage.avro.PigAvroRecordWriter.write (PigAvroRecordWriter.java:49) по адресу org.apache.pig.piggybank.storage.avro.pute.AvroStorage.java:646) по адресу org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigOutputFormat $ PigRecordWriter.write (PigOutputFormat.java:136) по адресу org.apache.pig.backendedutOg_Lay.Pay.Pay.Pay.Pay.Pay.Pay.Pay.Pay.Pay.Pay.Pay.Pay.Play.Play.Play.Play.Play.Play.Play.Play.Play.Play.Play.Play.Pay.Pay.Pay.Pay.Pay.Pay.Pay.Pay.Pay.Pay.Pay.Pay.Pay.Pay.Ov_Lay.Ov_Live.Og_Life.PigRecordWriter.write (PigOutputFormat.java:95) по адресу org.apache.hadoop.mapred.ReduceTask $ NewTrackingRecordWriter.write (ReduceTask.java:558) по адресу org.apache.hadoop.mapreduce.task.TmpTutputOputTutputInputTutputTutputInputTutputTutputInputTutputTutputInputTutputTutputTutputInputTutputTutputInputTutputTutputInput89) в org.apache.hadoop.mapreduce.lib.reduce.WrappedReducer $ Context.write (WrappedReducer.java:105) в org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigGenericMaperenGedgjava: 477) ... еще 11 причин: java.lang.RuntimeException: элемент данных (0.01,12) не находится в объединении ["null", {"type": "record "," name ":" TUPLE_1 "," fields ": [{" name ": "cent", "type": ["null", "float"], "doc": "автоматически сгенерировано из схемы поля Pig", "default": null}, {"name": "entityCount", "type": ["null", "int"], "doc": "автоматически сгенерировано из схемы поля Pig", "default": null}]}] at org.apache.pig.piggybank.storage.avro..apache.pig.piggybank.storage.avro.PigAvroDatumWriter.write (PigAvroDatumWriter.java:82) вorg.apache.avro.generic.GenericDatumWriter.writeArray (GenericDatumWriter.java:131) в org.apache.avro.generic.GenericDatumWriter.write (GenericDatumWriter.java:68) в org.apigro.PigAvroDatumWriter.write (PigAvroDatumWriter.java:99) в org.apache.pig.piggybank.storage.avro.PigAvroDatumWriter.writeUnion (PigAvroDatumWriter.java:113) в org.ritw.vig.vig.vigPigAvroDatumWriter.java:82) at org.apache.pig.piggybank.storage.avro.PigAvroDatumWriter.writeRecord (PigAvroDatumWriter.java:378) в org.apache.avro.generic.GenericerwerWat.apache.pig.piggybank.storage.avro.PigAvroDatumWriter..append (DataFileWriter.java:257) ...

Кто-нибудь знает, что я сделал неправильно в схеме?

...