Sorry I hit the send button to fast... The error occurs in the worker. Juan Carlos Garcia <jcgarc...@gmail.com> schrieb am Mi., 19. Sep. 2018, 20:22:
> Sorry for hijacking the thread, we are running Spark on top of Yarn, yarn > retries multiple times until it reachs it max attempt and then gives up. > > Raghu Angadi <rang...@google.com> schrieb am Mi., 19. Sep. 2018, 18:58: > >> On Wed, Sep 19, 2018 at 7:26 AM Juan Carlos Garcia <jcgarc...@gmail.com> >> wrote: >> >>> Don't know if its related, but we have seen our pipeline dying (using >>> SparkRunner) when there is problem with Kafka (network interruptions), >>> errors like: org.apache.kafka.common.errors.TimeoutException: Timeout >>> expired while fetching topic metadata >>> >>> Maybe this will fix it as well, thanks Raghu for the hint about >>> *withConsumerFactoryFn.* >>> >> >> Wouldn't that be retried by the SparkRunner if it happens on the worker? >> or does it happen while launching the pipeline on the client? >> >> >> >>> >>> >>> >>> On Wed, Sep 19, 2018 at 3:29 PM Eduardo Soldera < >>> eduardo.sold...@arquivei.com.br> wrote: >>> >>>> Hi Raghu, thank you. >>>> >>>> I'm not sure though what to pass as an argument: >>>> >>>> KafkaIO.read[String,String]() >>>> .withBootstrapServers(server) >>>> .withTopic(topic) >>>> .withKeyDeserializer(classOf[StringDeserializer]) >>>> .withValueDeserializer(classOf[StringDeserializer]) >>>> .withConsumerFactoryFn(new >>>> KafkaExecutor.ConsumerFactoryFn(????????????????)) >>>> .updateConsumerProperties(properties) >>>> .commitOffsetsInFinalize() >>>> .withoutMetadata() >>>> >>>> >>>> Regards >>>> >>>> >>>> Em ter, 18 de set de 2018 às 21:15, Raghu Angadi <rang...@google.com> >>>> escreveu: >>>> >>>>> Hi Eduardo, >>>>> >>>>> There another work around you can try without having to wait for 2.7.0 >>>>> release: Use a wrapper to catch exception from KafkaConsumer#poll() and >>>>> pass the wrapper to withConsumerFactoryFn() for KafkIO reader [1]. >>>>> >>>>> Using something like (such a wrapper is used in KafkasIO tests [2]): >>>>> private static class ConsumerFactoryFn >>>>> implements SerializableFunction<Map<String, Object>, >>>>> Consumer<byte[], byte[]>> { >>>>> @Override >>>>> public Consumer<byte[], byte[]> apply(Map<String, Object> config) { >>>>> return new KafkaConsumer(config) { >>>>> @Override >>>>> public ConsumerRecords<K, V> poll(long timeout) { >>>>> // work around for BEAM-5375 >>>>> while (true) { >>>>> try { >>>>> return super.poll(timeout); >>>>> } catch (Exception e) { >>>>> // LOG & sleep for sec >>>>> } >>>>> } >>>>> } >>>>> } >>>>> } >>>>> >>>>> [1]: >>>>> https://github.com/apache/beam/blob/release-2.4.0/sdks/java/io/kafka/src/main/java/org/apache/beam/sdk/io/kafka/KafkaIO.java#L417 >>>>> [2]: >>>>> https://github.com/apache/beam/blob/release-2.4.0/sdks/java/io/kafka/src/test/java/org/apache/beam/sdk/io/kafka/KafkaIOTest.java#L261 >>>>> >>>>> On Tue, Sep 18, 2018 at 5:49 AM Eduardo Soldera < >>>>> eduardo.sold...@arquivei.com.br> wrote: >>>>> >>>>>> Hi Raghu, we're not sure how long the network was down. According to >>>>>> the logs no longer than one minute. A 30 second shutdown would work for >>>>>> the >>>>>> tests. >>>>>> >>>>>> Regards >>>>>> >>>>>> Em sex, 14 de set de 2018 às 21:41, Raghu Angadi <rang...@google.com> >>>>>> escreveu: >>>>>> >>>>>>> Thanks. I could repro myself as well. How long was the network down? >>>>>>> >>>>>>> Trying to get the fix into 2.7 RC2. >>>>>>> >>>>>>> On Fri, Sep 14, 2018 at 12:25 PM Eduardo Soldera < >>>>>>> eduardo.sold...@arquivei.com.br> wrote: >>>>>>> >>>>>>>> Just to make myself clear, I'm not sure how to use the patch but if >>>>>>>> you could send us some guidance would be great. >>>>>>>> >>>>>>>> Em sex, 14 de set de 2018 às 16:24, Eduardo Soldera < >>>>>>>> eduardo.sold...@arquivei.com.br> escreveu: >>>>>>>> >>>>>>>>> Hi Raghu, yes, it is feasible, would you do that for us? I'm not >>>>>>>>> sure how we'd use the patch. We're using SBT and Spotify's Scio with >>>>>>>>> Scala. >>>>>>>>> >>>>>>>>> Thanks >>>>>>>>> >>>>>>>>> Em sex, 14 de set de 2018 às 16:07, Raghu Angadi < >>>>>>>>> rang...@google.com> escreveu: >>>>>>>>> >>>>>>>>>> Is is feasible for you to verify the fix in your dev job? I can >>>>>>>>>> make a patch against Beam 2.4 branch if you like. >>>>>>>>>> >>>>>>>>>> Raghu. >>>>>>>>>> >>>>>>>>>> On Fri, Sep 14, 2018 at 11:14 AM Eduardo Soldera < >>>>>>>>>> eduardo.sold...@arquivei.com.br> wrote: >>>>>>>>>> >>>>>>>>>>> Hi Raghu, thank you very much for the pull request. >>>>>>>>>>> We'll wait for the 2.7 Beam release. >>>>>>>>>>> >>>>>>>>>>> Regards! >>>>>>>>>>> >>>>>>>>>>> Em qui, 13 de set de 2018 às 18:19, Raghu Angadi < >>>>>>>>>>> rang...@google.com> escreveu: >>>>>>>>>>> >>>>>>>>>>>> Fix: https://github.com/apache/beam/pull/6391 >>>>>>>>>>>> >>>>>>>>>>>> On Wed, Sep 12, 2018 at 3:30 PM Raghu Angadi < >>>>>>>>>>>> rang...@google.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Filed BEAM-5375 >>>>>>>>>>>>> <https://issues.apache.org/jira/browse/BEAM-5375>. I will fix >>>>>>>>>>>>> it later this week. >>>>>>>>>>>>> >>>>>>>>>>>>> On Wed, Sep 12, 2018 at 12:16 PM Raghu Angadi < >>>>>>>>>>>>> rang...@google.com> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Wed, Sep 12, 2018 at 12:11 PM Raghu Angadi < >>>>>>>>>>>>>> rang...@google.com> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thanks for the job id, I looked at the worker logs >>>>>>>>>>>>>>> (following usual support oncall access protocol that provides >>>>>>>>>>>>>>> temporary >>>>>>>>>>>>>>> access to things like logs in GCP): >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Root issue looks like consumerPollLoop() mentioned earlier >>>>>>>>>>>>>>> needs to handle unchecked exception. In your case it is clear >>>>>>>>>>>>>>> that poll >>>>>>>>>>>>>>> thread exited with a runtime exception. The reader does not >>>>>>>>>>>>>>> check for it >>>>>>>>>>>>>>> and continues to wait for poll thread to enqueue messages. A >>>>>>>>>>>>>>> fix should >>>>>>>>>>>>>>> result in an IOException for read from the source. The runners >>>>>>>>>>>>>>> will handle >>>>>>>>>>>>>>> that appropriately after that. I will file a jira. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> https://github.com/apache/beam/blob/master/sdks/java/io/kafka/src/main/java/org/apache/beam/sdk/io/kafka/KafkaUnboundedReader.java#L678 >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Ignore the link.. was pasted here by mistake. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> From the logs (with a comment below each one): >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> - 2018-09-12 06:13:07.345 PDT Reader-0: reading from >>>>>>>>>>>>>>> kafka_topic-0 starting at offset 2 >>>>>>>>>>>>>>> - Implies the reader is initialized and poll thread >>>>>>>>>>>>>>> is started. >>>>>>>>>>>>>>> - 2018-09-12 06:13:07.780 PDT Reader-0: first record >>>>>>>>>>>>>>> offset 2 >>>>>>>>>>>>>>> - The reader actually got a message received by the >>>>>>>>>>>>>>> poll thread from Kafka. >>>>>>>>>>>>>>> - 2018-09-12 06:16:48.771 PDT Reader-0: exception while >>>>>>>>>>>>>>> fetching latest offset for partition kafka_topic-0. will be >>>>>>>>>>>>>>> retried. >>>>>>>>>>>>>>> - This must have happened around the time when >>>>>>>>>>>>>>> network was disrupted. This is from. Actual log is from >>>>>>>>>>>>>>> another periodic >>>>>>>>>>>>>>> task that fetches latest offsets for partitions. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> The poll thread must have died around the time network was >>>>>>>>>>>>>>> disrupted. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> The following log comes from kafka client itself and is >>>>>>>>>>>>>>> printed every second when KafkaIO fetches latest offset. This >>>>>>>>>>>>>>> log seems to >>>>>>>>>>>>>>> be added in recent versions. It is probably an unintentional >>>>>>>>>>>>>>> log. I don't >>>>>>>>>>>>>>> think there is any better to fetch latest offsets than how >>>>>>>>>>>>>>> KafkaIO does >>>>>>>>>>>>>>> now. This is logged inside consumer.position() called at [1]. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> - 2018-09-12 06:13:11.786 PDT [Consumer >>>>>>>>>>>>>>> clientId=consumer-2, >>>>>>>>>>>>>>> groupId=Reader-0_offset_consumer_1735388161_genericPipe] >>>>>>>>>>>>>>> Resetting offset >>>>>>>>>>>>>>> for partition com.arquivei.dataeng.andre-0 to offset 3. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> [1]: >>>>>>>>>>>>>>> https://github.com/apache/beam/blob/master/sdks/java/io/kafka/src/main/java/org/apache/beam/sdk/io/kafka/KafkaUnboundedReader.java#L678 >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> This 'Resetting offset' is harmless, but is quite annoying to >>>>>>>>>>>>>> see in the worker logs. One way to avoid is to set kafka >>>>>>>>>>>>>> consumer's log >>>>>>>>>>>>>> level to WARNING. Ideally KafkaIO itself should do something to >>>>>>>>>>>>>> avoid it >>>>>>>>>>>>>> without user option. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Wed, Sep 12, 2018 at 10:27 AM Eduardo Soldera < >>>>>>>>>>>>>>> eduardo.sold...@arquivei.com.br> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Hi Raghu! The job_id of our dev job is >>>>>>>>>>>>>>>> 2018-09-12_06_11_48-5600553605191377866. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Thanks! >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Em qua, 12 de set de 2018 às 14:18, Raghu Angadi < >>>>>>>>>>>>>>>> rang...@google.com> escreveu: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Thanks for debugging. >>>>>>>>>>>>>>>>> Can you provide the job_id of your dev job? The stacktrace >>>>>>>>>>>>>>>>> shows that there is no thread running 'consumerPollLoop()' >>>>>>>>>>>>>>>>> which can >>>>>>>>>>>>>>>>> explain stuck reader. You will likely find a logs at line 594 >>>>>>>>>>>>>>>>> & 587 [1]. >>>>>>>>>>>>>>>>> Dataflow caches its readers and DirectRunner may not. That >>>>>>>>>>>>>>>>> can explain >>>>>>>>>>>>>>>>> DirectRunner resume reads. The expectation in KafkaIO is that >>>>>>>>>>>>>>>>> Kafka client >>>>>>>>>>>>>>>>> library takes care of retrying in case of connection problems >>>>>>>>>>>>>>>>> (as >>>>>>>>>>>>>>>>> documented). It is possible that in some cases poll() throws >>>>>>>>>>>>>>>>> and we need to >>>>>>>>>>>>>>>>> restart the client in KafkaIO. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> [1]: >>>>>>>>>>>>>>>>> https://github.com/apache/beam/blob/master/sdks/java/io/kafka/src/main/java/org/apache/beam/sdk/io/kafka/KafkaUnboundedReader.java#L594 >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On Wed, Sep 12, 2018 at 9:59 AM Eduardo Soldera < >>>>>>>>>>>>>>>>> eduardo.sold...@arquivei.com.br> wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Hi Raghu, thanks for your help. >>>>>>>>>>>>>>>>>> Just answering your previous question, the following logs >>>>>>>>>>>>>>>>>> were the same as before the error, as if the pipeline were >>>>>>>>>>>>>>>>>> still getting >>>>>>>>>>>>>>>>>> the messages, for example: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> (...) >>>>>>>>>>>>>>>>>> Resetting offset for partition >>>>>>>>>>>>>>>>>> com.arquivei.dataeng.andre-0 to offset 10. >>>>>>>>>>>>>>>>>> Resetting offset for partition >>>>>>>>>>>>>>>>>> com.arquivei.dataeng.andre-0 to offset 15. >>>>>>>>>>>>>>>>>> ERROR >>>>>>>>>>>>>>>>>> Resetting offset for partition >>>>>>>>>>>>>>>>>> com.arquivei.dataeng.andre-0 to offset 22. >>>>>>>>>>>>>>>>>> Resetting offset for partition >>>>>>>>>>>>>>>>>> com.arquivei.dataeng.andre-0 to offset 30. >>>>>>>>>>>>>>>>>> (...) >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> But when checking the Kafka Consumer Group, the current >>>>>>>>>>>>>>>>>> offset stays at 15, the commited offset from the last >>>>>>>>>>>>>>>>>> processed message, >>>>>>>>>>>>>>>>>> before the error. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> We'll file a bug, but we could now reproduce the issue in >>>>>>>>>>>>>>>>>> a Dev scenario. >>>>>>>>>>>>>>>>>> We started the same pipeline using the direct runner, >>>>>>>>>>>>>>>>>> without Google Dataflow. We blocked the Kafka Broker network >>>>>>>>>>>>>>>>>> and the same >>>>>>>>>>>>>>>>>> error was thrown. Then we unblocked the network and the >>>>>>>>>>>>>>>>>> pipeline was able >>>>>>>>>>>>>>>>>> to successfully process the subsequent messages. >>>>>>>>>>>>>>>>>> When we started the same pipeline in the Dataflow runner >>>>>>>>>>>>>>>>>> and did the same test, the same problem from our production >>>>>>>>>>>>>>>>>> scenario >>>>>>>>>>>>>>>>>> happened, Dataflow couldn't process the new messages. >>>>>>>>>>>>>>>>>> Unfortunately, we've >>>>>>>>>>>>>>>>>> stopped the dataflow job in production, but the problematic >>>>>>>>>>>>>>>>>> dev job is >>>>>>>>>>>>>>>>>> still running and the log file of the VM is attached. Thank >>>>>>>>>>>>>>>>>> you very much. >>>>>>>>>>>>>>>>>> Best regards >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Em ter, 11 de set de 2018 às 18:28, Raghu Angadi < >>>>>>>>>>>>>>>>>> rang...@google.com> escreveu: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Specifically, I am interested if you have any thread >>>>>>>>>>>>>>>>>>> running 'consumerPollLoop()' [1]. There should always be >>>>>>>>>>>>>>>>>>> one (if a worker >>>>>>>>>>>>>>>>>>> is assigned one of the partitions). It is possible that >>>>>>>>>>>>>>>>>>> KafkaClient itself >>>>>>>>>>>>>>>>>>> is hasn't recovered from the group coordinator error >>>>>>>>>>>>>>>>>>> (though unlikely). >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> https://github.com/apache/beam/blob/master/sdks/java/io/kafka/src/main/java/org/apache/beam/sdk/io/kafka/KafkaUnboundedReader.java#L570 >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> On Tue, Sep 11, 2018 at 12:31 PM Raghu Angadi < >>>>>>>>>>>>>>>>>>> rang...@google.com> wrote: >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Hi Eduardo, >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> In case of any error, the pipeline should keep on >>>>>>>>>>>>>>>>>>>> trying to fetch. I don't know about this particular error. >>>>>>>>>>>>>>>>>>>> Do you see any >>>>>>>>>>>>>>>>>>>> others afterwards in the log? >>>>>>>>>>>>>>>>>>>> Couple of things you could try if the logs are not >>>>>>>>>>>>>>>>>>>> useful : >>>>>>>>>>>>>>>>>>>> - login to one of the VMs and get stacktrace of java >>>>>>>>>>>>>>>>>>>> worker (look for a container called java-streaming) >>>>>>>>>>>>>>>>>>>> - file a support bug or stackoverflow question with >>>>>>>>>>>>>>>>>>>> jobid so that Dataflow oncall can take a look. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Raghu. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> On Tue, Sep 11, 2018 at 12:10 PM Eduardo Soldera < >>>>>>>>>>>>>>>>>>>> eduardo.sold...@arquivei.com.br> wrote: >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>>>>>>>>> We have a Apache Beam pipeline running in Google >>>>>>>>>>>>>>>>>>>>> Dataflow using KafkaIO. Suddenly the pipeline stop >>>>>>>>>>>>>>>>>>>>> fetching Kafka messages >>>>>>>>>>>>>>>>>>>>> at all, as our other workers from other pipelines >>>>>>>>>>>>>>>>>>>>> continued to get Kafka >>>>>>>>>>>>>>>>>>>>> messages. >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> At the moment it stopped we got these messages: >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> I [Consumer clientId=consumer-1, groupId=genericPipe] >>>>>>>>>>>>>>>>>>>>> Error sending fetch request (sessionId=1396189203, >>>>>>>>>>>>>>>>>>>>> epoch=2431598) to node 3: >>>>>>>>>>>>>>>>>>>>> org.apache.kafka.common.errors.DisconnectException. >>>>>>>>>>>>>>>>>>>>> I [Consumer clientId=consumer-1, groupId=genericPipe] >>>>>>>>>>>>>>>>>>>>> Group coordinator 10.0.52.70:9093 (id: 2147483646 rack: >>>>>>>>>>>>>>>>>>>>> null) is unavailable or invalid, will attempt rediscovery >>>>>>>>>>>>>>>>>>>>> I [Consumer clientId=consumer-1, groupId=genericPipe] >>>>>>>>>>>>>>>>>>>>> Discovered group coordinator 10.0.52.70:9093 (id: >>>>>>>>>>>>>>>>>>>>> 2147483646 rack: null) >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> And then the pipeline stopped reading the messages. >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> This is the KafkaIO setup we have: >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> KafkaIO.read[String,String]() >>>>>>>>>>>>>>>>>>>>> .withBootstrapServers(server) >>>>>>>>>>>>>>>>>>>>> .withTopic(topic) >>>>>>>>>>>>>>>>>>>>> .withKeyDeserializer(classOf[StringDeserializer]) >>>>>>>>>>>>>>>>>>>>> .withValueDeserializer(classOf[StringDeserializer]) >>>>>>>>>>>>>>>>>>>>> .updateConsumerProperties(properties) >>>>>>>>>>>>>>>>>>>>> .commitOffsetsInFinalize() >>>>>>>>>>>>>>>>>>>>> .withoutMetadata() >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Any help will be much appreciated. >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Best regards, >>>>>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>>>>> Eduardo Soldera Garcia >>>>>>>>>>>>>>>>>>>>> Data Engineer >>>>>>>>>>>>>>>>>>>>> (16) 3509-5555 | www.arquivei.com.br >>>>>>>>>>>>>>>>>>>>> <https://arquivei.com.br/?utm_campaign=assinatura-email&utm_content=assinatura> >>>>>>>>>>>>>>>>>>>>> [image: Arquivei.com.br – Inteligência em Notas >>>>>>>>>>>>>>>>>>>>> Fiscais] >>>>>>>>>>>>>>>>>>>>> <https://arquivei.com.br/?utm_campaign=assinatura-email&utm_content=assinatura> >>>>>>>>>>>>>>>>>>>>> [image: Google seleciona Arquivei para imersão e >>>>>>>>>>>>>>>>>>>>> mentoria no Vale do Silício] >>>>>>>>>>>>>>>>>>>>> <https://arquivei.com.br/blog/google-seleciona-arquivei/?utm_campaign=assinatura-email-launchpad&utm_content=assinatura-launchpad> >>>>>>>>>>>>>>>>>>>>> <https://www.facebook.com/arquivei> >>>>>>>>>>>>>>>>>>>>> <https://www.linkedin.com/company/arquivei> >>>>>>>>>>>>>>>>>>>>> <https://www.youtube.com/watch?v=sSUUKxbXnxk> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>> Eduardo Soldera Garcia >>>>>>>>>>>>>>>>>> Data Engineer >>>>>>>>>>>>>>>>>> (16) 3509-5555 | www.arquivei.com.br >>>>>>>>>>>>>>>>>> <https://arquivei.com.br/?utm_campaign=assinatura-email&utm_content=assinatura> >>>>>>>>>>>>>>>>>> [image: Arquivei.com.br – Inteligência em Notas Fiscais] >>>>>>>>>>>>>>>>>> <https://arquivei.com.br/?utm_campaign=assinatura-email&utm_content=assinatura> >>>>>>>>>>>>>>>>>> [image: Google seleciona Arquivei para imersão e mentoria >>>>>>>>>>>>>>>>>> no Vale do Silício] >>>>>>>>>>>>>>>>>> <https://arquivei.com.br/blog/google-seleciona-arquivei/?utm_campaign=assinatura-email-launchpad&utm_content=assinatura-launchpad> >>>>>>>>>>>>>>>>>> <https://www.facebook.com/arquivei> >>>>>>>>>>>>>>>>>> <https://www.linkedin.com/company/arquivei> >>>>>>>>>>>>>>>>>> <https://www.youtube.com/watch?v=sSUUKxbXnxk> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>> Eduardo Soldera Garcia >>>>>>>>>>>>>>>> Data Engineer >>>>>>>>>>>>>>>> (16) 3509-5555 | www.arquivei.com.br >>>>>>>>>>>>>>>> <https://arquivei.com.br/?utm_campaign=assinatura-email&utm_content=assinatura> >>>>>>>>>>>>>>>> [image: Arquivei.com.br – Inteligência em Notas Fiscais] >>>>>>>>>>>>>>>> <https://arquivei.com.br/?utm_campaign=assinatura-email&utm_content=assinatura> >>>>>>>>>>>>>>>> [image: Google seleciona Arquivei para imersão e mentoria >>>>>>>>>>>>>>>> no Vale do Silício] >>>>>>>>>>>>>>>> <https://arquivei.com.br/blog/google-seleciona-arquivei/?utm_campaign=assinatura-email-launchpad&utm_content=assinatura-launchpad> >>>>>>>>>>>>>>>> <https://www.facebook.com/arquivei> >>>>>>>>>>>>>>>> <https://www.linkedin.com/company/arquivei> >>>>>>>>>>>>>>>> <https://www.youtube.com/watch?v=sSUUKxbXnxk> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> Eduardo Soldera Garcia >>>>>>>>>>> Data Engineer >>>>>>>>>>> (16) 3509-5555 | www.arquivei.com.br >>>>>>>>>>> <https://arquivei.com.br/?utm_campaign=assinatura-email&utm_content=assinatura> >>>>>>>>>>> [image: Arquivei.com.br – Inteligência em Notas Fiscais] >>>>>>>>>>> <https://arquivei.com.br/?utm_campaign=assinatura-email&utm_content=assinatura> >>>>>>>>>>> [image: Google seleciona Arquivei para imersão e mentoria no >>>>>>>>>>> Vale do Silício] >>>>>>>>>>> <https://arquivei.com.br/blog/google-seleciona-arquivei/?utm_campaign=assinatura-email-launchpad&utm_content=assinatura-launchpad> >>>>>>>>>>> <https://www.facebook.com/arquivei> >>>>>>>>>>> <https://www.linkedin.com/company/arquivei> >>>>>>>>>>> <https://www.youtube.com/watch?v=sSUUKxbXnxk> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Eduardo Soldera Garcia >>>>>>>>> Data Engineer >>>>>>>>> (16) 3509-5555 | www.arquivei.com.br >>>>>>>>> <https://arquivei.com.br/?utm_campaign=assinatura-email&utm_content=assinatura> >>>>>>>>> [image: Arquivei.com.br – Inteligência em Notas Fiscais] >>>>>>>>> <https://arquivei.com.br/?utm_campaign=assinatura-email&utm_content=assinatura> >>>>>>>>> [image: Google seleciona Arquivei para imersão e mentoria no Vale >>>>>>>>> do Silício] >>>>>>>>> <https://arquivei.com.br/blog/google-seleciona-arquivei/?utm_campaign=assinatura-email-launchpad&utm_content=assinatura-launchpad> >>>>>>>>> <https://www.facebook.com/arquivei> >>>>>>>>> <https://www.linkedin.com/company/arquivei> >>>>>>>>> <https://www.youtube.com/watch?v=sSUUKxbXnxk> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Eduardo Soldera Garcia >>>>>>>> Data Engineer >>>>>>>> (16) 3509-5555 | www.arquivei.com.br >>>>>>>> <https://arquivei.com.br/?utm_campaign=assinatura-email&utm_content=assinatura> >>>>>>>> [image: Arquivei.com.br – Inteligência em Notas Fiscais] >>>>>>>> <https://arquivei.com.br/?utm_campaign=assinatura-email&utm_content=assinatura> >>>>>>>> [image: Google seleciona Arquivei para imersão e mentoria no Vale >>>>>>>> do Silício] >>>>>>>> <https://arquivei.com.br/blog/google-seleciona-arquivei/?utm_campaign=assinatura-email-launchpad&utm_content=assinatura-launchpad> >>>>>>>> <https://www.facebook.com/arquivei> >>>>>>>> <https://www.linkedin.com/company/arquivei> >>>>>>>> <https://www.youtube.com/watch?v=sSUUKxbXnxk> >>>>>>>> >>>>>>> >>>>>> >>>>>> -- >>>>>> Eduardo Soldera Garcia >>>>>> Data Engineer >>>>>> (16) 3509-5555 | www.arquivei.com.br >>>>>> <https://arquivei.com.br/?utm_campaign=assinatura-email&utm_content=assinatura> >>>>>> [image: Arquivei.com.br – Inteligência em Notas Fiscais] >>>>>> <https://arquivei.com.br/?utm_campaign=assinatura-email&utm_content=assinatura> >>>>>> [image: Google seleciona Arquivei para imersão e mentoria no Vale do >>>>>> Silício] >>>>>> <https://arquivei.com.br/blog/google-seleciona-arquivei/?utm_campaign=assinatura-email-launchpad&utm_content=assinatura-launchpad> >>>>>> <https://www.facebook.com/arquivei> >>>>>> <https://www.linkedin.com/company/arquivei> >>>>>> <https://www.youtube.com/watch?v=sSUUKxbXnxk> >>>>>> >>>>> >>>> >>>> -- >>>> Eduardo Soldera Garcia >>>> Data Engineer >>>> (16) 3509-5555 | www.arquivei.com.br >>>> <https://arquivei.com.br/?utm_campaign=assinatura-email&utm_content=assinatura> >>>> [image: Arquivei.com.br – Inteligência em Notas Fiscais] >>>> <https://arquivei.com.br/?utm_campaign=assinatura-email&utm_content=assinatura> >>>> [image: Google seleciona Arquivei para imersão e mentoria no Vale do >>>> Silício] >>>> <https://arquivei.com.br/blog/google-seleciona-arquivei/?utm_campaign=assinatura-email-launchpad&utm_content=assinatura-launchpad> >>>> <https://www.facebook.com/arquivei> >>>> <https://www.linkedin.com/company/arquivei> >>>> <https://www.youtube.com/watch?v=sSUUKxbXnxk> >>>> >>> >>> >>> -- >>> >>> JC >>> >>>