Good afternoon, I'm trying to set up a custom jav...
# ingestion
b
Good afternoon, I'm trying to set up a custom java emitter to update a glue dataset's
stats
. At the moment, all I'm trying to upsert is the
timestampMillis
. When I try to set the timestampMillis, I get the following error despite passing a long value:
Copy code
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
	at com.linkedin.metadata.timeseries.transformer.TimeseriesAspectTransformer.getCommonDocument(TimeseriesAspectTransformer.java:80)
	at com.linkedin.metadata.timeseries.transformer.TimeseriesAspectTransformer.transform(TimeseriesAspectTransformer.java:47)
	at com.linkedin.metadata.kafka.hook.UpdateIndicesHook.updateTimeseriesFields(UpdateIndicesHook.java:217)
	at com.linkedin.metadata.kafka.hook.UpdateIndicesHook.invoke(UpdateIndicesHook.java:115)
	at com.linkedin.metadata.kafka.MetadataChangeLogProcessor.consume(MetadataChangeLogProcessor.java:77)
	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.springframework.messaging.handler.invocation.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:169)
	at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:119)
	at org.springframework.kafka.listener.adapter.HandlerAdapter.invoke(HandlerAdapter.java:56)
	at org.springframework.kafka.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:347)
	at org.springframework.kafka.listener.adapter.RecordMessagingMessageListenerAdapter.onMessage(RecordMessagingMessageListenerAdapter.java:92)
	at org.springframework.kafka.listener.adapter.RecordMessagingMessageListenerAdapter.onMessage(RecordMessagingMessageListenerAdapter.java:53)
	at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeOnMessage(KafkaMessageListenerContainer.java:2334)
	at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeOnMessage(KafkaMessageListenerContainer.java:2315)
	at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeRecordListener(KafkaMessageListenerContainer.java:2237)
	at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeWithRecords(KafkaMessageListenerContainer.java:2150)
	at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeRecordListener(KafkaMessageListenerContainer.java:2032)
	at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeListener(KafkaMessageListenerContainer.java:1705)
	at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeIfHaveRecords(KafkaMessageListenerContainer.java:1276)
	at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.pollAndInvoke(KafkaMessageListenerContainer.java:1268)
	at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.run(KafkaMessageListenerContainer.java:1163)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
So I had two questions: 1. Is there some more documentation on how to update a dataset's profile aspect? 2. Is there a reason the long value is getting converted to an int? Or am I trying to update this aspect incorrectly? Here's my Java function:
Copy code
MetadataChangeProposalWrapper mcpw = MetadataChangeProposalWrapper.builder()
                .entityType("dataset")
                .entityUrn("urn:li:dataset:(<urn>,TEST)")
                .upsert()
                .aspect(new DatasetProfile()
                        //.setColumnCount(11)
                        .setTimestampMillis(0L)
                )
                .build();
Thanks in advance for your help!
b
Hi Samantha! are you having any issues using a custom java emitter to update anything else on a dataset? or just when updating the timestamp?
b
Hi Chris! I was able to update the dataset properties, but when I tried to update something like the column count for the profile, I got an error saying the timestampMillis field was required
Following up here for anyone else running into this issue: Chris suggested using
System.currentTimeMillis()
instead of passing a static long and it solved my issue!