org.apache.beam.sdk.Pipeline$PipelineExecutionException: 
java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Map
 at 
org.apache.beam.runners.direct.DirectRunner$DirectPipelineResult.waitUntilFinish
 (DirectRunner.java:348)
 at 
org.apache.beam.runners.direct.DirectRunner$DirectPipelineResult.waitUntilFinish
 (DirectRunner.java:318)
 at org.apache.beam.runners.direct.DirectRunner.run (DirectRunner.java:213)
 at org.apache.beam.runners.direct.DirectRunner.run (DirectRunner.java:67)
 at org.apache.beam.sdk.Pipeline.run (Pipeline.java:317)
 at org.apache.beam.sdk.Pipeline.run (Pipeline.java:303)
 at com.theconversation.data.TopArticlesEnriched.main 
(TopArticlesEnriched.java:181)
 at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke 
(NativeMethodAccessorImpl.java:62)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke 
(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke (Method.java:498)
 at org.codehaus.mojo.exec.ExecJavaMojo$1.run (ExecJavaMojo.java:282)
 at java.lang.Thread.run (Thread.java:748)
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to 
java.util.Map
 at org.apache.beam.sdk.io.gcp.bigquery.BigQueryUtils.lambda$toBeamValue$12 
(BigQueryUtils.java:528)
 at java.util.stream.ReferencePipeline$3$1.accept (ReferencePipeline.java:193)
 at java.util.ArrayList$ArrayListSpliterator.forEachRemaining 
(ArrayList.java:1382)
 at java.util.stream.AbstractPipeline.copyInto (AbstractPipeline.java:482)
 at java.util.stream.AbstractPipeline.wrapAndCopyInto 
(AbstractPipeline.java:472)
 at java.util.stream.ReduceOps$ReduceOp.evaluateSequential (ReduceOps.java:708)
 at java.util.stream.AbstractPipeline.evaluate (AbstractPipeline.java:234)
 at java.util.stream.ReferencePipeline.collect (ReferencePipeline.java:566)
 at org.apache.beam.sdk.io.gcp.bigquery.BigQueryUtils.toBeamValue 
(BigQueryUtils.java:530)
 at org.apache.beam.sdk.io.gcp.bigquery.BigQueryUtils.toBeamRowFieldValue 
(BigQueryUtils.java:491)
 at org.apache.beam.sdk.io.gcp.bigquery.BigQueryUtils.lambda$toBeamRow$6 
(BigQueryUtils.java:477)
 at java.util.stream.ReferencePipeline$3$1.accept (ReferencePipeline.java:193)
 at java.util.ArrayList$ArrayListSpliterator.forEachRemaining 
(ArrayList.java:1382)
 at java.util.stream.AbstractPipeline.copyInto (AbstractPipeline.java:482)
 at java.util.stream.AbstractPipeline.wrapAndCopyInto 
(AbstractPipeline.java:472)
 at java.util.stream.ReduceOps$ReduceOp.evaluateSequential (ReduceOps.java:708)
 at java.util.stream.AbstractPipeline.evaluate (AbstractPipeline.java:234)
 at java.util.stream.ReferencePipeline.collect (ReferencePipeline.java:566)
 at org.apache.beam.sdk.io.gcp.bigquery.BigQueryUtils.toBeamRow 
(BigQueryUtils.java:478)
 at org.apache.beam.sdk.io.gcp.bigquery.BigQueryUtils.lambda$static$9bc3d4b2$1 
(BigQueryUtils.java:341)
 at org.apache.beam.sdk.schemas.SchemaCoder.encode (SchemaCoder.java:166)
 at org.apache.beam.sdk.coders.Coder.encode (Coder.java:136)
 at org.apache.beam.sdk.util.CoderUtils.encodeToSafeStream (CoderUtils.java:82)
 at org.apache.beam.sdk.util.CoderUtils.encodeToByteArray (CoderUtils.java:66)
 at org.apache.beam.sdk.util.CoderUtils.encodeToByteArray (CoderUtils.java:51)
 at org.apache.beam.sdk.util.CoderUtils.clone (CoderUtils.java:141)
 at 
org.apache.beam.sdk.util.MutationDetectors$CodedValueMutationDetector.<init> 
(MutationDetectors.java:115)
 at org.apache.beam.sdk.util.MutationDetectors.forValueWithCoder 
(MutationDetectors.java:46)
 at 
org.apache.beam.runners.direct.ImmutabilityCheckingBundleFactory$ImmutabilityEnforcingBundle.add
 (ImmutabilityCheckingBundleFactory.java:112)
 at org.apache.beam.runners.direct.ParDoEvaluator$BundleOutputManager.output 
(ParDoEvaluator.java:299)
 at 
org.apache.beam.repackaged.direct_java.runners.core.SimpleDoFnRunner.outputWindowedValue
 (SimpleDoFnRunner.java:258)
 at 
org.apache.beam.repackaged.direct_java.runners.core.SimpleDoFnRunner.access$700 
(SimpleDoFnRunner.java:78)
 at 
org.apache.beam.repackaged.direct_java.runners.core.SimpleDoFnRunner$DoFnProcessContext.output
 (SimpleDoFnRunner.java:627)
 at 
org.apache.beam.repackaged.direct_java.runners.core.SimpleDoFnRunner$DoFnProcessContext.output
 (SimpleDoFnRunner.java:615)
 at 
org.apache.beam.sdk.io.gcp.bigquery.PassThroughThenCleanup$IdentityFn.processElement
 (PassThroughThenCleanup.java:83)

On Sat, 18 Apr 2020, at 12:59 AM, Chamikara Jayalath wrote:
> Do you have the full stack trace ?
> Also, does readTableRows() work for you (without using schemas) ?
> 
> On Fri, Apr 17, 2020 at 3:44 AM Joshua Bassett <he...@joshbassett.info> wrote:
>> Hi there
>> 
>>  I'm trying to read rows from a BigQuery table that contains a repeated 
>> field into POJOs. Unfortunately, I'm running into issues and I can't figure 
>> it out.
>> 
>>  I have something like this:
>> 
>>  @DefaultSchema(JavaFieldSchema.class)
>>  class Article implements Serializable {
>>  public Long id;
>>  public String title;
>>  @SchemaFieldName("author_ids")
>>  public Long[] authorIds;
>>  }
>> 
>>  PCollection<Article> articles = pipeline
>>  .apply(
>>  BigQueryIO
>>  .readTableRowsWithSchema()
>>  .from("myproject:data_warehouse.articles")
>>  )
>>  .apply(Convert.to(Article.class));
>> 
>>  The schema looks like this:
>> 
>>  [
>>  {
>>  "mode": "NULLABLE",
>>  "name": "id",
>>  "type": "INTEGER"
>>  },
>>  {
>>  "mode": "NULLABLE",
>>  "name": "title",
>>  "type": "STRING"
>>  },
>>  {
>>  "mode": "REPEATED",
>>  "name": "author_ids",
>>  "type": "INTEGER"
>>  }
>>  ]
>> 
>>  When I run the pipeline, I end up with the following exception:
>> 
>>  java.lang.ClassCastException: java.lang.String cannot be cast to 
>> java.util.Map
>> 
>>  Should this be possible? Strangely, when I remove the repeated field from 
>> the schema/POJO it works perfectly.
>> 
>>  I'm using Beam SDK 2.19.0 with the direct runner. Any help would be much 
>> appreciated.
>> 
>>  Josh

Reply via email to