Can we create Ignite In memory Table with purging - ignite

I am a new bee to Ignite.
Can we create or configure In Memory Ignite Table with purging time,
My Ask is -> A record inserted at X point of time shall automatically be deleted after 3 Hrs
Any help is highly appreciated

Take a look at expiry policies documentation: https://apacheignite.readme.io/docs/expiry-policies
CreatedExpiryPolicy should solve your problem.

Related

Add retention period to hive tables

Could you please let me know how to add retention period to Hive tables.
In the below URL I could see partition discovery and retention is not recommended for use on managed tables. I don't understand why it is not recommended.
I have created a table added below properties to the table schema.
Just to be sure I have ran the command MSCK REPAIR TABLE table_name SYNC PARTITIONS
I have inserted the data into the table. As per the retention period, the partitions should be dropped after 30 minutes but nothing was dropped.
Am I missing something here? Thank you in advance for your help
'auto.purge'='true', 'discover.partitions'='true',
'partition.retention.period'='30m',
https://docs.cloudera.com/HDPDocuments/HDP3/HDP-3.1.0/using-hiveql/content/hive-manage-partitions.html

Changing number of backup from x to y in ignite cluster

I have a ignite cluster running with 8 nodes.
I created one table
CREATE TABLE Sample(....) WITH "template=partitioned,backups=1"
and it is having 300 Millon entries (cache: "SampleCache")
Now I want to change back up to 0. How can I do this?
Documentation of ALTER doesn't specify anything related to this.
I want to avoid dropping table and creating again.
I'm afraid there's no support for changing cache configuration after it is started. This means you will have to drop table and create another one.

MuleSoft ESB Batch Transactions

Thanks is advance for any help. Here is the scenario that I am trying to recreate in Mulesoft.
1,500,000 records in a table. Here is the current process that we use.
Start a transaction.
delete all records from the table.
reload the table from a flat file.
commit the transaction.
in the end we need the file in a good state, thus the use of the transaction. If there is any failure, the data in the table will be rolled back to the initial valid state.
I was able to get the speed that we needed by using the Batch element < 10 minutes, but it appears that transactions are not supported around the whole batch flow.
Any ideas how I could get this to work in Mulesoft?
Thanks again.
A little different workflow but how about:
Load temp table from flat file
If successful drop original table
Rename temp table to original table name
You can keep your Mule batch processing workflow to load the temp table and forget about rolling back.
For this you might try the following:
Use XA transactions (since more than one connector will be used,
regardless of the use of the same transport or not)
Enlist in the transaction the resource used in the custom Java code.
This also can be applied within the same transport (e.g. JDBC on the Mule configuration and also on the Java component), so it's not restricted to the case demonstrated in the PoC, which is only given as a reference.
Please refer to this article https://dzone.com/articles/passing-java-arrays-in-oracle-stored-procedure-fro
From temp table poll records.You can contruct array with any number of records. With 100K size will only involve 15 round trips in total.
To determine error records you can insert records in an error table but that has to be implemented in database procedure.

trigger in apache Ignite

Any one can tell me is there any Time based Trigger Policy available in Apache Ignite?
I Have an Object Having Expiry Date When That Date(Time-stamp) Expire I want to update This value and override it in Cache is it possible in Apache Ignite
Thanks in advance
You can configure a time-based expiration policy in Apache Ignite with eager TTL: Expiry Policies. This way objects will be eagerly expired from cache after a certain time.
Then you can subscribe a javax.cache.event.CacheEntryExpiredListener, which will be triggered after every expiration, and update the cache from that listener. However, it looks like there will be a small window when the entry will have been already expired from a cache and before you put and updated value into cache.
If the above window is not acceptable to you, then you can simply query all entries from a cache periodically and update all the entries that are older than a certain expiration time. In this case you would have to ensure that all entries have a timestamp filed, which will be indexed and used in SQL queries. Something like this:
SELECT * from SOME_TYPE where timestamp > 2;
More on SQL queries here: Distributed Queries, Local Queries.
Maybe like this:
cache.withExpiryPolicy(new CreatedExpiryPolicy(new Duration(TimeUnit.SECONDS, 123))).put(k, v);
The expiration will be applied only to this entry.
For trigger try continuous queries: apacheignite.readme.io/docs/continuous-queries

ORA-14450: attempt to access the transactional temp table already in use

Folks, I'm with this error:
ORA-14450: attempt to access the transactional temp table already in
use.
Can someone help me?
The session which locks the table is not committed/roll backed the changes.
Find out which session blocks that table and kill that session. or wait till that session commit/rollback the changes.