AKASH SINGH
07/09/2024, 1:09 PMconst clientId = data.clid;
const customerId = data.cid;
const sessionId = data.sid;
const dataString = JSON.stringify(data);
// Prepare the data to be ingested into Druid
const druidData = JSON.stringify([
{
clientId,
customerId,
sessionId,
data: dataString,
},
]);
const ingestionSpec = {
type: "index",
spec: {
dataSchema: {
dataSource: "device-hbs",
timestampSpec: {
column: "sst",
format: "auto",
},
dimensionsSpec: {
dimensions: [
{ name: "clientId", type: "string" },
{ name: "customerId", type: "string" },
{ name: "sessionId", type: "string" },
{ name: "data", type: "string" },
],
},
metricsSpec: [],
granularitySpec: {
type: "uniform",
segmentGranularity: "HOUR",
queryGranularity: "none",
rollup: false,
intervals: [],
},
transformSpec: {
filter: null,
transforms: [],
},
},
ioConfig: {
type: "index",
inputSource: {
type: "inline",
data: druidData,
},
inputFormat: {
type: "json",
},
appendToExisting: false,
dropExisting: false,
},
tuningConfig: {
type: "index",
maxRowsPerSegment: null,
appendableIndexSpec: {
type: "onheap",
preserveExistingMetrics: false,
},
maxRowsInMemory: 1000000,
maxBytesInMemory: 0,
skipBytesInMemoryOverheadCheck: false,
maxTotalRows: null,
numShards: null,
partitionDimensions: [],
partitionsSpec: null,
indexSpec: {
bitmap: {
type: "roaring",
compressRunOnSerialization: true,
},
dimensionCompression: "lz4",
stringDictionaryEncoding: {
type: "utf8",
},
metricCompression: "lz4",
longEncoding: "longs",
},
indexSpecForIntermediatePersists: {
bitmap: {
type: "roaring",
compressRunOnSerialization: true,
},
dimensionCompression: "lz4",
stringDictionaryEncoding: {
type: "utf8",
},
metricCompression: "lz4",
longEncoding: "longs",
},
maxPendingPersists: 0,
forceGuaranteedRollup: false,
reportParseExceptions: false,
pushTimeout: 0,
segmentWriteOutMediumFactory: null,
logParseExceptions: false,
maxParseExceptions: 2147483647,
maxSavedParseExceptions: 0,
maxColumnsToMerge: -1,
awaitSegmentAvailabilityTimeoutMillis: 0,
},
},
context: {
forceTimeChunkLock: true,
useLineageBasedSegmentAllocation: true,
},
};