Does Pinot support reading the data from S3 when t...
# general
s
Does Pinot support reading the data from S3 when the data is stored as Pinot segments in S3?
Our use case involves data stored in HDFS in parquet format. We convert this data from parquet to Pinot segments and plan to create an offline table. Additionally, the data in S3, stored in Pinot segment format, will be incremented hourly. We copy the data from HDFS to S3 on an hourly basis and then convert it from parquet to Pinot segments.
g
fup
s
I am trying to convert parquet format to pinot segments, but I am seeing some issue
Copy code
{
  "recordReaderSpec": {
    "type": "SegmentCreationAndTar",
    "dataFormat": "parquet",
    "schemaURI": "<s3://xxxxxxxxx/uapi-pinot/schema.avsc>"
  },
  "inputDirURI": "<s3://xxxxxxxxx/uapi-pinot/log_date=2023-02-27/log_hour=00/>",
  "outputDirURI": "<s3://xxxxxxxxx/pinot_segments/>",
  "overwriteOutput": true,
  "recordTransformerSpec": {
    "transformerClassName": "org.apache.pinot.plugin.inputformat.thrift.ThriftRecordTransformer",
    "dataSchema": {
      "dataSource": "uapi",
      "granularitySpec": {
        "dataType": "LONG",
        "segmentGranularity": "HOUR",
        "queryGranularity": "NONE"
      }
    }
  },
  "segmentGenerationJobRunnerClassName": "org.apache.pinot.plugin.inputformat.thrift.ThriftSegmentGenerationJobRunner",
  "pushJobRunnerClassName": "org.apache.pinot.plugin.inputformat.thrift.ThriftPushJobRunner",
  "s3Config": {
    "awsAccessKey": "xxxxxxxxx",
    "awsSecretKey": "xxxxxxxxxxx"
  },
  "proxyConfig": {
    "httpProxy": "<http://abc.com:8080>",
    "httpsProxy": "<http://abc.com:8080>",
    "ftpProxy": "<http://abc.com:8080>"
  },
  "includeFileNamePattern": ".*"
}
getting below error
Copy code
[0.001s][warning][gc] -Xloggc is deprecated. Will use -Xlog:gc:gc-pinot-server.log instead.
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/pinot/lib/pinot-all-1.0.0-jar-with-dependencies.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-metrics/pinot-dropwizard/pinot-dropwizard-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-metrics/pinot-yammer/pinot-yammer-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-orc/pinot-orc-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-parquet/pinot-parquet-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-clp-log/pinot-clp-log-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-file-system/pinot-s3/pinot-s3-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-stream-ingestion/pinot-pulsar/pinot-pulsar-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-environment/pinot-azure/pinot-azure-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See <http://www.slf4j.org/codes.html#multiple_bindings> for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (file:/opt/pinot/lib/pinot-all-1.0.0-jar-with-dependencies.jar) to method java.lang.Object.finalize()
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
2023/11/24 22:59:02.064 ERROR [LaunchDataIngestionJobCommand] [main] Got exception to generate IngestionJobSpec for data ingestion job - 
org.yaml.snakeyaml.constructor.ConstructorException: Cannot create property=recordReaderSpec for JavaBean=org.apache.pinot.spi.ingestion.batch.spec.SegmentGenerationJobSpec@9a6fbc0
 in 'string', line 1, column 1:
    {
    ^
Cannot create property=type for JavaBean=org.apache.pinot.spi.ingestion.batch.spec.RecordReaderSpec@4d96250
 in 'string', line 2, column 23:
      "recordReaderSpec": {
                          ^
Unable to find property 'type' on class: org.apache.pinot.spi.ingestion.batch.spec.RecordReaderSpec
 in 'string', line 3, column 13:
        "type": "SegmentCreationAndTar",
                ^

 in 'string', line 2, column 23:
      "recordReaderSpec": {
                          ^

	at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.constructJavaBean2ndStep(Constructor.java:283) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.construct(Constructor.java:169) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.constructor.Constructor$ConstructYamlObject.construct(Constructor.java:320) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:264) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:247) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.constructor.BaseConstructor.constructDocument(BaseConstructor.java:201) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:185) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:493) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.Yaml.loadAs(Yaml.java:473) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.getSegmentGenerationJobSpec(IngestionJobLauncher.java:100) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.admin.command.LaunchDataIngestionJobCommand.execute(LaunchDataIngestionJobCommand.java:111) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.Command.call(Command.java:33) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.Command.call(Command.java:29) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine.executeUserObject(CommandLine.java:1953) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine.access$1300(CommandLine.java:145) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine.execute(CommandLine.java:2078) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.admin.PinotAdministrator.execute(PinotAdministrator.java:171) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.admin.PinotAdministrator.main(PinotAdministrator.java:202) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
Caused by: org.yaml.snakeyaml.constructor.ConstructorException: Cannot create property=type for JavaBean=org.apache.pinot.spi.ingestion.batch.spec.RecordReaderSpec@4d96250
 in 'string', line 2, column 23:
      "recordReaderSpec": {
                          ^
Unable to find property 'type' on class: org.apache.pinot.spi.ingestion.batch.spec.RecordReaderSpec
 in 'string', line 3, column 13:
        "type": "SegmentCreationAndTar",
                ^

	at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.constructJavaBean2ndStep(Constructor.java:283) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.construct(Constructor.java:169) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:264) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:247) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.constructJavaBean2ndStep(Constructor.java:261) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	... 21 more
Caused by: org.yaml.snakeyaml.error.YAMLException: Unable to find property 'type' on class: org.apache.pinot.spi.ingestion.batch.spec.RecordReaderSpec
	at org.yaml.snakeyaml.introspector.PropertyUtils.getProperty(PropertyUtils.java:155) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.introspector.PropertyUtils.getProperty(PropertyUtils.java:145) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.getProperty(Constructor.java:299) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.constructJavaBean2ndStep(Constructor.java:223) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.construct(Constructor.java:169) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:264) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:247) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.constructJavaBean2ndStep(Constructor.java:261) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	... 21 more
Cannot create property=recordReaderSpec for JavaBean=org.apache.pinot.spi.ingestion.batch.spec.SegmentGenerationJobSpec@9a6fbc0
 in 'string', line 1, column 1:
    {
    ^
Cannot create property=type for JavaBean=org.apache.pinot.spi.ingestion.batch.spec.RecordReaderSpec@4d96250
 in 'string', line 2, column 23:
      "recordReaderSpec": {
                          ^
Unable to find property 'type' on class: org.apache.pinot.spi.ingestion.batch.spec.RecordReaderSpec
 in 'string', line 3, column 13:
        "type": "SegmentCreationAndTar",
                ^

 in 'string', line 2, column 23:
      "recordReaderSpec": {
                          ^

	at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.constructJavaBean2ndStep(Constructor.java:283)
	at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.construct(Constructor.java:169)
	at org.yaml.snakeyaml.constructor.Constructor$ConstructYamlObject.construct(Constructor.java:320)
	at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:264)
	at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:247)
	at org.yaml.snakeyaml.constructor.BaseConstructor.constructDocument(BaseConstructor.java:201)
	at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:185)
	at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:493)
	at org.yaml.snakeyaml.Yaml.loadAs(Yaml.java:473)
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.getSegmentGenerationJobSpec(IngestionJobLauncher.java:100)
	at org.apache.pinot.tools.admin.command.LaunchDataIngestionJobCommand.execute(LaunchDataIngestionJobCommand.java:111)
	at org.apache.pinot.tools.Command.call(Command.java:33)
	at org.apache.pinot.tools.Command.call(Command.java:29)
	at picocli.CommandLine.executeUserObject(CommandLine.java:1953)
could you please help here
@Evan Galpin can you help here ?
e
@Sandeep R I believe the specs should be in yaml rather than json. I haven’t looked at validating the contents of your spec though, there may be additional issues. This StarTree guide looks highly applicable: https://dev.startree.ai/docs/pinot/recipes/ingest-csv-files-from-s3#create-the-ingestion-job-spec-file
s
@Evan Galpin I updated to yaml, but still no luck
Copy code
[0.001s][warning][gc] -Xloggc is deprecated. Will use -Xlog:gc:gc-pinot-server.log instead.
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/pinot/lib/pinot-all-1.0.0-jar-with-dependencies.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-metrics/pinot-dropwizard/pinot-dropwizard-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-metrics/pinot-yammer/pinot-yammer-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-orc/pinot-orc-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-parquet/pinot-parquet-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-clp-log/pinot-clp-log-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-file-system/pinot-s3/pinot-s3-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-stream-ingestion/pinot-pulsar/pinot-pulsar-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-environment/pinot-azure/pinot-azure-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See <http://www.slf4j.org/codes.html#multiple_bindings> for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (file:/opt/pinot/lib/pinot-all-1.0.0-jar-with-dependencies.jar) to method java.lang.Object.finalize()
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
2023/11/24 23:41:15.754 ERROR [LaunchDataIngestionJobCommand] [main] Got exception to generate IngestionJobSpec for data ingestion job - 
org.yaml.snakeyaml.constructor.ConstructorException: Cannot create property=type for JavaBean=org.apache.pinot.spi.ingestion.batch.spec.SegmentGenerationJobSpec@563a89b5
 in 'string', line 1, column 1:
    type: SegmentCreationAndTar
    ^
Unable to find property 'type' on class: org.apache.pinot.spi.ingestion.batch.spec.SegmentGenerationJobSpec
 in 'string', line 1, column 7:
    type: SegmentCreationAndTar
          ^

	at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.constructJavaBean2ndStep(Constructor.java:283) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.construct(Constructor.java:169) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.constructor.Constructor$ConstructYamlObject.construct(Constructor.java:320) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:264) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:247) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.constructor.BaseConstructor.constructDocument(BaseConstructor.java:201) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:185) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:493) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.Yaml.loadAs(Yaml.java:473) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.getSegmentGenerationJobSpec(IngestionJobLauncher.java:100) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.admin.command.LaunchDataIngestionJobCommand.execute(LaunchDataIngestionJobCommand.java:111) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.Command.call(Command.java:33) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.Command.call(Command.java:29) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine.executeUserObject(CommandLine.java:1953) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine.access$1300(CommandLine.java:145) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine.execute(CommandLine.java:2078) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.admin.PinotAdministrator.execute(PinotAdministrator.java:171) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.admin.PinotAdministrator.main(PinotAdministrator.java:202) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
Caused by: org.yaml.snakeyaml.error.YAMLException: Unable to find property 'type' on class: org.apache.pinot.spi.ingestion.batch.spec.SegmentGenerationJobSpec
	at org.yaml.snakeyaml.introspector.PropertyUtils.getProperty(PropertyUtils.java:155) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.introspector.PropertyUtils.getProperty(PropertyUtils.java:145) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.getProperty(Constructor.java:299) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.constructJavaBean2ndStep(Constructor.java:223) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	... 21 more
Cannot create property=type for JavaBean=org.apache.pinot.spi.ingestion.batch.spec.SegmentGenerationJobSpec@563a89b5
 in 'string', line 1, column 1:
    type: SegmentCreationAndTar
    ^
Unable to find property 'type' on class: org.apache.pinot.spi.ingestion.batch.spec.SegmentGenerationJobSpec
 in 'string', line 1, column 7:
    type: SegmentCreationAndTar
          ^

	at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.constructJavaBean2ndStep(Constructor.java:283)
	at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.construct(Constructor.java:169)
	at org.yaml.snakeyaml.constructor.Constructor$ConstructYamlObject.construct(Constructor.java:320)
	at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:264)
	at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:247)
	at org.yaml.snakeyaml.constructor.BaseConstructor.constructDocument(BaseConstructor.java:201)
	at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:185)
	at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:493)
	at org.yaml.snakeyaml.Yaml.loadAs(Yaml.java:473)
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.getSegmentGenerationJobSpec(IngestionJobLauncher.java:100)
	at org.apache.pinot.tools.admin.command.LaunchDataIngestionJobCommand.execute(LaunchDataIngestionJobCommand.java:111)
	at org.apache.pinot.tools.Command.call(Command.java:33)
	at org.apache.pinot.tools.Command.call(Command.java:29)
	at picocli.CommandLine.executeUserObject(CommandLine.java:1953)
	at picocli.CommandLine.access$1300(CommandLine.java:145)
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2346)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2311)
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)
	at picocli.CommandLine.execute(CommandLine.java:2078)
	at org.apache.pinot.tools.admin.PinotAdministrator.execute(PinotAdministrator.java:171)
	at org.apache.pinot.tools.admin.PinotAdministrator.main(PinotAdministrator.java:202)
Caused by: org.yaml.snakeyaml.error.YAMLException: Unable to find property 'type' on class: org.apache.pinot.spi.ingestion.batch.spec.SegmentGenerationJobSpec
	at org.yaml.snakeyaml.introspector.PropertyUtils.getProperty(PropertyUtils.java:155)
	at org.yaml.snakeyaml.introspector.PropertyUtils.getProperty(PropertyUtils.java:145)
	at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.getProperty(Constructor.java:299)
	at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.constructJavaBean2ndStep(Constructor.java:223)
e
s
@Evan Galpin I noticed that the provided link demonstrates the conversion from CSV to Parquet in Pinot. Do you have an example or documentation showcasing the conversion from Parquet to Pinot segments?
e
based on the example using CSV’s, you’d need to change these settings:
Copy code
recordReaderSpec:
  dataFormat: 'csv'
  className: 'org.apache.pinot.plugin.inputformat.csv.CSVRecordReader'
  configClassName: 'org.apache.pinot.plugin.inputformat.csv.CSVRecordReaderConfig'
to use the parquet equivalents:
Copy code
recordReaderSpec:
  dataFormat: 'parquet'
  className: 'org.apache.pinot.plugin.inputformat.parquet.ParquetRecordReader'
  configClassName: 'org.apache.pinot.plugin.inputformat.parquet.ParquetRecordReaderConfig'
Similarly the glob pattern needs to change:
Copy code
includeFileNamePattern: 'glob:**/*.csv' -> 'glob:**/*.parquet'
x
From the stacktrace, I think your issue is the yaml format. Can you validate the config yaml file is valid first?
s
thanks your inputs, I am seeing other issue now, here is my timestamp format
2023-02-27T00:19:41.952+00:00
and i added in pinot_schema_config.json here is how i define in schema
Copy code
dateTimeFieldSpecs": [
    {
      "name": "LOG_TS",
      "dataType": "STRING",
      "format": "1:MILLISECONDS:SIMPLE_DATE_FORMAT:yyyy-MM-dd'T'HH:mm:ss.SSSZ",
      "granularity": "1:MILLISECONDS"
    }
seeing the below error
Copy code
Caused by: java.lang.IllegalArgumentException: Cannot convert value: '2023-11-28T03:55:20.886+0000' to type: LONG
	at org.apache.pinot.spi.data.FieldSpec$DataType.convert(FieldSpec.java:532)
	at org.apache.pinot.segment.local.recordtransformer.NullValueTransformer.<init>(NullValueTransformer.java:76)
	at org.apache.pinot.segment.local.recordtransformer.CompositeTransformer.getDefaultTransformer(CompositeTransformer.java:73)
	at org.apache.pinot.segment.local.segment.creator.TransformPipeline.<init>(TransformPipeline.java:60)
	at org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl.init(SegmentIndexCreationDriverImpl.java:145)
	at org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl.init(SegmentIndexCreationDriverImpl.java:101)
	at org.apache.pinot.plugin.ingestion.batch.common.SegmentGenerationTaskRunner.run(SegmentGenerationTaskRunner.java:112)
	at org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner.lambda$submitSegmentGenTask$1(SegmentGenerationJobRunner.j
This was working when we tried inserting data from Kafka to Pinot, but here we are reading the data from S3 and converting it into Pinot segments.
x
can you paste the full stacktrace
the stacktrace shows you make the type as
long
and the value is
'2023-11-28T03:55:20.886+0000'
s
here it is
Copy code
[0.001s][warning][gc] -Xloggc is deprecated. Will use -Xlog:gc:gc-pinot-server.log instead.
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/pinot/lib/pinot-all-1.0.0-jar-with-dependencies.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-metrics/pinot-dropwizard/pinot-dropwizard-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-metrics/pinot-yammer/pinot-yammer-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-orc/pinot-orc-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-parquet/pinot-parquet-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-clp-log/pinot-clp-log-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-file-system/pinot-s3/pinot-s3-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-stream-ingestion/pinot-pulsar/pinot-pulsar-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-environment/pinot-azure/pinot-azure-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See <http://www.slf4j.org/codes.html#multiple_bindings> for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (file:/opt/pinot/lib/pinot-all-1.0.0-jar-with-dependencies.jar) to method java.lang.Object.finalize()
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
2023/11/28 03:57:09.626 ERROR [LaunchDataIngestionJobCommand] [main] Got exception to kick off standalone data ingestion job - 
java.lang.RuntimeException: Caught exception during running - org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.kickoffIngestionJob(IngestionJobLauncher.java:152) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.runIngestionJob(IngestionJobLauncher.java:121) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.admin.command.LaunchDataIngestionJobCommand.execute(LaunchDataIngestionJobCommand.java:130) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.Command.call(Command.java:33) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.Command.call(Command.java:29) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine.executeUserObject(CommandLine.java:1953) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine.access$1300(CommandLine.java:145) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine.execute(CommandLine.java:2078) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.admin.PinotAdministrator.execute(PinotAdministrator.java:171) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.admin.PinotAdministrator.main(PinotAdministrator.java:202) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
Caused by: java.lang.RuntimeException: Failed to generate Pinot segment for file - <s3://tvlp-ds-pinot-dev/uapi-pinot/log_date=2023-02-27/log_hour=00/000095_0>
	at org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner.lambda$submitSegmentGenTask$1(SegmentGenerationJobRunner.java:287) ~[pinot-batch-ingestion-standalone-1.0.0-shaded.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
	at java.lang.Thread.run(Thread.java:829) ~[?:?]
Caused by: java.lang.IllegalArgumentException: Cannot convert value: '2023-11-28T03:55:20.886+0000' to type: LONG
	at org.apache.pinot.spi.data.FieldSpec$DataType.convert(FieldSpec.java:532) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.recordtransformer.NullValueTransformer.<init>(NullValueTransformer.java:76) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.recordtransformer.CompositeTransformer.getDefaultTransformer(CompositeTransformer.java:73) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.TransformPipeline.<init>(TransformPipeline.java:60) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl.init(SegmentIndexCreationDriverImpl.java:145) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl.init(SegmentIndexCreationDriverImpl.java:101) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.plugin.ingestion.batch.common.SegmentGenerationTaskRunner.run(SegmentGenerationTaskRunner.java:112) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner.lambda$submitSegmentGenTask$1(SegmentGenerationJobRunner.java:265) ~[pinot-batch-ingestion-standalone-1.0.0-shaded.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
	at java.lang.Thread.run(Thread.java:829) ~[?:?]
java.lang.RuntimeException: Caught exception during running - org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.kickoffIngestionJob(IngestionJobLauncher.java:152)
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.runIngestionJob(IngestionJobLauncher.java:121)
	at org.apache.pinot.tools.admin.command.LaunchDataIngestionJobCommand.execute(LaunchDataIngestionJobCommand.java:130)
	at org.apache.pinot.tools.Command.call(Command.java:33)
	at org.apache.pinot.tools.Command.call(Command.java:29)
	at picocli.CommandLine.executeUserObject(CommandLine.java:1953)
	at picocli.CommandLine.access$1300(CommandLine.java:145)
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2346)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2311)
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)
	at picocli.CommandLine.execute(CommandLine.java:2078)
	at org.apache.pinot.tools.admin.PinotAdministrator.execute(PinotAdministrator.java:171)
	at org.apache.pinot.tools.admin.PinotAdministrator.main(PinotAdministrator.java:202)
Caused by: java.lang.RuntimeException: Failed to generate Pinot segment for file - <s3://tvlp-ds-pinot-dev/uapi-pinot/log_date=2023-02-27/log_hour=00/000095_0>
	at org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner.lambda$submitSegmentGenTask$1(SegmentGenerationJobRunner.java:287)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.IllegalArgumentException: Cannot convert value: '2023-11-28T03:55:20.886+0000' to type: LONG
	at org.apache.pinot.spi.data.FieldSpec$DataType.convert(FieldSpec.java:532)
	at org.apache.pinot.segment.local.recordtransformer.NullValueTransformer.<init>(NullValueTransformer.java:76)
	at org.apache.pinot.segment.local.recordtransformer.CompositeTransformer.getDefaultTransformer(CompositeTransformer.java:73)
	at org.apache.pinot.segment.local.segment.creator.TransformPipeline.<init>(TransformPipeline.java:60)
	at org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl.init(SegmentIndexCreationDriverImpl.java:145)
	at org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl.init(SegmentIndexCreationDriverImpl.java:101)
	at org.apache.pinot.plugin.ingestion.batch.common.SegmentGenerationTaskRunner.run(SegmentGenerationTaskRunner.java:112)
	at org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner.lambda$submitSegmentGenTask$1(SegmentGenerationJobRunner.java:265)
	... 5 more
I tired two approaches 1. with STRING
Copy code
"dateTimeFieldSpecs": [
    {
      "name": "LOG_TS",
      "dataType": "STRING",
      "format": "1:MILLISECONDS:SIMPLE_DATE_FORMAT:yyyy-MM-dd'T'HH:mm:ss.SSSZ",
      "granularity": "1:MILLISECONDS"
    }
Copy code
[0.001s][warning][gc] -Xloggc is deprecated. Will use -Xlog:gc:gc-pinot-server.log instead.
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/pinot/lib/pinot-all-1.0.0-jar-with-dependencies.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-metrics/pinot-dropwizard/pinot-dropwizard-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-metrics/pinot-yammer/pinot-yammer-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-orc/pinot-orc-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-parquet/pinot-parquet-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-clp-log/pinot-clp-log-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-file-system/pinot-s3/pinot-s3-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-stream-ingestion/pinot-pulsar/pinot-pulsar-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-environment/pinot-azure/pinot-azure-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See <http://www.slf4j.org/codes.html#multiple_bindings> for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (file:/opt/pinot/lib/pinot-all-1.0.0-jar-with-dependencies.jar) to method java.lang.Object.finalize()
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
2023/11/28 10:46:04.436 ERROR [LaunchDataIngestionJobCommand] [main] Got exception to kick off standalone data ingestion job - 
java.lang.RuntimeException: Caught exception during running - org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.kickoffIngestionJob(IngestionJobLauncher.java:152) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.runIngestionJob(IngestionJobLauncher.java:121) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.admin.command.LaunchDataIngestionJobCommand.execute(LaunchDataIngestionJobCommand.java:130) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.Command.call(Command.java:33) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.Command.call(Command.java:29) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine.executeUserObject(CommandLine.java:1953) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine.access$1300(CommandLine.java:145) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine.execute(CommandLine.java:2078) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.admin.PinotAdministrator.execute(PinotAdministrator.java:171) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.admin.PinotAdministrator.main(PinotAdministrator.java:202) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
Caused by: java.lang.RuntimeException: Failed to generate Pinot segment for file - <s3://tvlp-ds-pinot-dev/uapi-pinot/log_date=2023-02-27/log_hour=00/000095_0>
	at org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner.lambda$submitSegmentGenTask$1(SegmentGenerationJobRunner.java:287) ~[pinot-batch-ingestion-standalone-1.0.0-shaded.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
	at java.lang.Thread.run(Thread.java:829) ~[?:?]
Caused by: java.lang.IllegalArgumentException: Cannot convert value: '2023-11-28T10:44:30.601+0000' to type: LONG
	at org.apache.pinot.spi.data.FieldSpec$DataType.convert(FieldSpec.java:532) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.recordtransformer.NullValueTransformer.<init>(NullValueTransformer.java:76) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.recordtransformer.CompositeTransformer.getDefaultTransformer(CompositeTransformer.java:73) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.TransformPipeline.<init>(TransformPipeline.java:60) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl.init(SegmentIndexCreationDriverImpl.java:145) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl.init(SegmentIndexCreationDriverImpl.java:101) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.plugin.ingestion.batch.common.SegmentGenerationTaskRunner.run(SegmentGenerationTaskRunner.java:112) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner.lambda$submitSegmentGenTask$1(SegmentGenerationJobRunner.java:265) ~[pinot-batch-ingestion-standalone-1.0.0-shaded.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
	at java.lang.Thread.run(Thread.java:829) ~[?:?]
java.lang.RuntimeException: Caught exception during running - org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.kickoffIngestionJob(IngestionJobLauncher.java:152)
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.runIngestionJob(IngestionJobLauncher.java:121)
	at org.apache.pinot.tools.admin.command.LaunchDataIngestionJobCommand.execute(LaunchDataIngestionJobCommand.java:130)
	at org.apache.pinot.tools.Command.call(Command.java:33)
	at org.apache.pinot.tools.Command.call(Command.java:29)
	at picocli.CommandLine.executeUserObject(CommandLine.java:1953)
	at picocli.CommandLine.access$1300(CommandLine.java:145)
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2346)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2311)
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)
	at picocli.CommandLine.execute(CommandLine.java:2078)
	at org.apache.pinot.tools.admin.PinotAdministrator.execute(PinotAdministrator.java:171)
	at org.apache.pinot.tools.admin.PinotAdministrator.main(PinotAdministrator.java:202)
Caused by: java.lang.RuntimeException: Failed to generate Pinot segment for file - <s3://tvlp-ds-pinot-dev/uapi-pinot/log_date=2023-02-27/log_hour=00/000095_0>
	at org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner.lambda$submitSegmentGenTask$1(SegmentGenerationJobRunner.java:287)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.IllegalArgumentException: Cannot convert value: '2023-11-28T10:44:30.601+0000' to type: LONG
	at org.apache.pinot.spi.data.FieldSpec$DataType.convert(FieldSpec.java:532)
	at org.apache.pinot.segment.local.recordtransformer.NullValueTransformer.<init>(NullValueTransformer.java:76)
	at org.apache.pinot.segment.local.recordtransformer.CompositeTransformer.getDefaultTransformer(CompositeTransformer.java:73)
	at org.apache.pinot.segment.local.segment.creator.TransformPipeline.<init>(TransformPipeline.java:60)
	at org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl.init(SegmentIndexCreationDriverImpl.java:145)
	at org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl.init(SegmentIndexCreationDriverImpl.java:101)
	at org.apache.pinot.plugin.ingestion.batch.common.SegmentGenerationTaskRunner.run(SegmentGenerationTaskRunner.java:112)
	at org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner.lambda$submitSegmentGenTask$1(SegmentGenerationJobRunner.java:265)
	... 5 more
and here is schema define
Copy code
{
  "schemaName": "uapitest",
  "dimensionFieldSpecs": [
    {
      "name": "log_id",
      "dataType": "STRING"
    },
    {
      "name": "date_id",
      "dataType": "STRING"
    },
    {
      "name": "time_id",
      "dataType": "INT"
    },
    {
      "name": "request_type_desc",
      "dataType": "STRING"
    },
    {
      "name": "success_ind",
      "dataType": "STRING"
    },
    {
      "name": "schema_version",
      "dataType": "STRING"
    },
    {
      "name": "agency_name",
      "dataType": "STRING"
    },
    {
      "name": "branch",
      "dataType": "STRING"
    },
    {
      "name": "target_branch",
      "dataType": "STRING"
    },
    {
      "name": "agent",
      "dataType": "STRING"
    },
    {
      "name": "pseudo_city_code",
      "dataType": "STRING"
    },
    {
      "name": "ur_locator_code",
      "dataType": "STRING"
    },
    {
      "name": "origin_application_code",
      "dataType": "STRING"
    },
    {
      "name": "provider_code",
      "dataType": "STRING"
    },
    {
      "name": "provider_code_list",
      "dataType": "STRING"
    },
    {
      "name": "supplier_code_list",
      "dataType": "STRING"
    },
    {
      "name": "total_number_of_travellers",
      "dataType": "INT"
    },
    {
      "name": "total_segments_booked",
      "dataType": "INT"
    },
    {
      "name": "total_segments_cancelled",
      "dataType": "INT"
    },
    {
      "name": "travel_origin",
      "dataType": "STRING"
    },
    {
      "name": "travel_destination",
      "dataType": "STRING"
    },
    {
      "name": "travel_startdate",
      "dataType": "STRING"
    },
    {
      "name": "travel_enddate",
      "dataType": "STRING"
    },
    {
      "name": "total_responsetime_ms",
      "dataType": "LONG"
    },
    {
      "name": "galileo_responsetime_ms",
      "dataType": "LONG"
    },
    {
      "name": "apollo_responsetime_ms",
      "dataType": "LONG"
    },
    {
      "name": "worldspan_responsetime_ms",
      "dataType": "LONG"
    },
    {
      "name": "axess_responsetime_ms",
      "dataType": "LONG"
    },
    {
      "name": "aircontent_responsetime_ms",
      "dataType": "LONG"
    },
    {
      "name": "railcontent_responsetime_ms",
      "dataType": "LONG"
    },
    {
      "name": "merchandising_responsetime_ms",
      "dataType": "LONG"
    },
    {
      "name": "services_responsetime_ms",
      "dataType": "LONG"
    },
    {
      "name": "trm_responsetime_ms",
      "dataType": "LONG"
    },
    {
      "name": "app_server_host",
      "dataType": "STRING"
    },
    {
      "name": "one_way_shop_ind",
      "dataType": "STRING"
    },
    {
      "name": "request_bytes",
      "dataType": "INT"
    },
    {
      "name": "response_bytes",
      "dataType": "INT"
    },
    {
      "name": "host_locator_code",
      "dataType": "STRING"
    },
    {
      "name": "optional_service_qty",
      "dataType": "INT"
    },
    {
      "name": "travel_segments",
      "dataType": "INT"
    },
    {
      "name": "travel_dates",
      "dataType": "STRING"
    },
    {
      "name": "supplier_locator_code",
      "dataType": "STRING"
    },
    {
      "name": "flight_number",
      "dataType": "STRING"
    },
    {
      "name": "class_of_service",
      "dataType": "STRING"
    },
    {
      "name": "availability_source",
      "dataType": "STRING"
    },
    {
      "name": "number_in_party",
      "dataType": "INT"
    },
    {
      "name": "air_segments_booked",
      "dataType": "INT"
    },
    {
      "name": "air_segments_cancelled",
      "dataType": "INT"
    },
    {
      "name": "hotel_code",
      "dataType": "STRING"
    },
    {
      "name": "hotel_search_by_addr_ind",
      "dataType": "STRING"
    },
    {
      "name": "hotel_segments_booked",
      "dataType": "INT"
    },
    {
      "name": "hotel_segments_cancelled",
      "dataType": "INT"
    },
    {
      "name": "car_segments_booked",
      "dataType": "INT"
    },
    {
      "name": "car_segments_cancelled",
      "dataType": "INT"
    },
    {
      "name": "request_base_price",
      "dataType": "DOUBLE"
    },
    {
      "name": "response_base_price",
      "dataType": "DOUBLE"
    },
    {
      "name": "base_difference_price",
      "dataType": "DOUBLE"
    },
    {
      "name": "request_total_price",
      "dataType": "DOUBLE"
    },
    {
      "name": "response_total_price",
      "dataType": "DOUBLE"
    },
    {
      "name": "total_difference_price",
      "dataType": "DOUBLE"
    },
    {
      "name": "ssl_term_region",
      "dataType": "STRING"
    },
    {
      "name": "error_level_code",
      "dataType": "STRING"
    },
    {
      "name": "error_code",
      "dataType": "STRING"
    },
    {
      "name": "error_type_code",
      "dataType": "STRING"
    },
    {
      "name": "error_text",
      "dataType": "STRING"
    },
    {
      "name": "soap_fault_text",
      "dataType": "STRING"
    },
    {
      "name": "etl_id",
      "dataType": "STRING"
    },
    {
      "name": "load_date",
      "dataType": "STRING"
    },
    {
      "name": "created_by",
      "dataType": "STRING"
    },
    {
      "name": "created_dt",
      "dataType": "STRING"
    },
    {
      "name": "updated_by",
      "dataType": "STRING"
    },
    {
      "name": "updated_dt",
      "dataType": "STRING"
    },
    {
      "name": "traceid",
      "dataType": "STRING"
    },
    {
      "name": "fare_rules_filter_category_codes",
      "dataType": "STRING"
    },
    {
      "name": "request_rate_plan_type",
      "dataType": "STRING"
    },
    {
      "name": "number_of_adults",
      "dataType": "INT"
    },
    {
      "name": "number_of_rooms",
      "dataType": "INT"
    },
    {
      "name": "guarantee_type",
      "dataType": "STRING"
    },
    {
      "name": "other_guarantee_info",
      "dataType": "STRING"
    },
    {
      "name": "response_rate_plan_type",
      "dataType": "STRING"
    },
    {
      "name": "response_message_code",
      "dataType": "STRING"
    },
    {
      "name": "booking_confirmation",
      "dataType": "STRING"
    },
    {
      "name": "status",
      "dataType": "STRING"
    },
    {
      "name": "language_code",
      "dataType": "STRING"
    },
    {
      "name": "pickup_location_type",
      "dataType": "STRING"
    },
    {
      "name": "return_location_type",
      "dataType": "STRING"
    },
    {
      "name": "pickup_location_number",
      "dataType": "INT"
    },
    {
      "name": "return_location_number",
      "dataType": "INT"
    },
    {
      "name": "rate_code",
      "dataType": "STRING"
    },
    {
      "name": "rate_category",
      "dataType": "STRING"
    },
    {
      "name": "rate_period",
      "dataType": "STRING"
    },
    {
      "name": "discount_number",
      "dataType": "INT"
    },
    {
      "name": "acriss_vehicle_code",
      "dataType": "STRING"
    },
    {
      "name": "rate_for_period",
      "dataType": "DOUBLE"
    },
    {
      "name": "base_rate",
      "dataType": "DOUBLE"
    },
    {
      "name": "cds_transaction_id",
      "dataType": "STRING"
    },
    {
      "name": "cds_execution_time",
      "dataType": "LONG"
    },
    {
      "name": "cds_success_failure_flag",
      "dataType": "STRING"
    },
    {
      "name": "cds_error_message",
      "dataType": "STRING"
    },
    {
      "name": "estimated_total_amount",
      "dataType": "DOUBLE"
    },
    {
      "name": "mandatory_charge_total",
      "dataType": "DOUBLE"
    },
    {
      "name": "air_conditioning",
      "dataType": "STRING"
    },
    {
      "name": "transmission_type",
      "dataType": "STRING"
    },
    {
      "name": "vehicle_class",
      "dataType": "STRING"
    },
    {
      "name": "category",
      "dataType": "STRING"
    },
    {
      "name": "vehicle_type",
      "dataType": "STRING"
    },
    {
      "name": "door_count",
      "dataType": "INT"
    },
    {
      "name": "aux1",
      "dataType": "STRING"
    },
    {
      "name": "aux2",
      "dataType": "STRING"
    },
    {
      "name": "aux3",
      "dataType": "STRING"
    },
    {
      "name": "cancellation_text",
      "dataType": "STRING"
    },
    {
      "name": "requested_negotiated_ratecodes_count",
      "dataType": "INT"
    },
    {
      "name": "rate_category_count",
      "dataType": "INT"
    },
    {
      "name": "number_of_rate_plan_types",
      "dataType": "INT"
    },
    {
      "name": "negotiated_rate_codes_in_response",
      "dataType": "STRING"
    },
    {
      "name": "response_negotiated_ratecode_count",
      "dataType": "INT"
    },
    {
      "name": "requested_vendor_location_count",
      "dataType": "INT"
    },
    {
      "name": "max_wait_time",
      "dataType": "INT"
    },
    {
      "name": "response_properties_count",
      "dataType": "INT"
    },
    {
      "name": "tax",
      "dataType": "DOUBLE"
    },
    {
      "name": "surcharge",
      "dataType": "DOUBLE"
    },
    {
      "name": "commision_indicator",
      "dataType": "STRING"
    },
    {
      "name": "percentage",
      "dataType": "DOUBLE"
    },
    {
      "name": "galileo_guarantee",
      "dataType": "STRING"
    },
    {
      "name": "galileo_deposit",
      "dataType": "STRING"
    },
    {
      "name": "worldspan_deposit_guarantee_prepayment",
      "dataType": "STRING"
    },
    {
      "name": "uapi_responsetime_ms",
      "dataType": "LONG"
    },
    {
      "name": "session_key",
      "dataType": "STRING"
    },
    {
      "name": "agency_country",
      "dataType": "STRING"
    },
    {
      "name": "source_ipaddress",
      "dataType": "STRING"
    },
    {
      "name": "ach_transactionid",
      "dataType": "STRING"
    },
    {
      "name": "db2_locktime",
      "dataType": "LONG"
    },
    {
      "name": "db2_number_of_locks",
      "dataType": "INT"
    },
    {
      "name": "override_pcc",
      "dataType": "STRING"
    },
    {
      "name": "meta_search",
      "dataType": "STRING"
    },
    {
      "name": "solution_result",
      "dataType": "STRING"
    },
    {
      "name": "ptc_list",
      "dataType": "STRING"
    }
  ],
  "dateTimeFieldSpecs": [
    {
      "name": "LOG_TS",
      "dataType": "STRING",
      "format": "1:MILLISECONDS:SIMPLE_DATE_FORMAT:yyyy-MM-dd'T'HH:mm:ss.SSSZ",
      "granularity": "1:MILLISECONDS"
    }
  ],
  "primaryKeyColumns": [
    "log_id"
  ]
}
table define :
Copy code
bash-4.2# cat pinot_table_config.json 

{
  "OFFLINE": {
    "tableName": "uapitest_OFFLINE",
    "tableType": "OFFLINE",
    
    "segmentsConfig": {
      "schemaName": "uapitest",
      "replication": "2",
      "replicasPerPartition": "2",
      "timeColumnName": "LOG_TS",
      "segmentPushFrequency": "HOURLY",
      "segmentPushType": "APPEND",
      "minimizeDataMovement": false
    },

    "tenants": {
      "broker": "DefaultTenant",
      "server": "DefaultTenant"
    },

    "tableIndexConfig": {
      "invertedIndexColumns": [],
      "noDictionaryColumns": [],
      "rangeIndexColumns": [],
      "rangeIndexVersion": 2,
      "autoGeneratedInvertedIndex": false,
      "createInvertedIndexDuringSegmentGeneration": false,
      "sortedColumn": [],
      "bloomFilterColumns": [],
      "loadMode": "MMAP",
      "onHeapDictionaryColumns": [],
      "varLengthDictionaryColumns": [],
      "enableDefaultStarTree": false,
      "enableDynamicStarTreeCreation": false,
      "aggregateMetrics": false,
      "nullHandlingEnabled": false,
      "optimizeDictionary": false,
      "optimizeDictionaryForMetrics": false,
      "noDictionarySizeRatioThreshold": 0.85
    },

    "metadata": {},
    "quota": {},
    "routing": {},
    "query": {},

    "ingestionConfig": {
      "continueOnError": false,
      "rowTimeValueCheck": false,
      "segmentTimeValueCheck": true
    },

    "isDimTable": false,

    "tableDataConfig": {
      "s3Config": {
        "s3BucketName": "xxxxxxxx",
        "awsAccessKey": "xxxxxxx",
        "awsSecretKey": "xxxxxxxxxxx"
      },

      "proxyConfig": {
        "httpProxy": "xxxxxxx:8080",
        "httpsProxy": "xxxxxx:8080",
        "ftpProxy": "xxxxxx:8080"
      }
    }
  }
}
1. with LONG
Copy code
"dateTimeFieldSpecs": [
    {
      "name": "LOG_TS",
      "dataType": "LONG",
      "format": "1:MILLISECONDS:SIMPLE_DATE_FORMAT:yyyy-MM-dd'T'HH:mm:ss.SSSZ",
      "granularity": "1:MILLISECONDS"
    }
Copy code
[0.001s][warning][gc] -Xloggc is deprecated. Will use -Xlog:gc:gc-pinot-server.log instead.
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/pinot/lib/pinot-all-1.0.0-jar-with-dependencies.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-metrics/pinot-dropwizard/pinot-dropwizard-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-metrics/pinot-yammer/pinot-yammer-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-orc/pinot-orc-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-parquet/pinot-parquet-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-clp-log/pinot-clp-log-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-file-system/pinot-s3/pinot-s3-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-stream-ingestion/pinot-pulsar/pinot-pulsar-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-environment/pinot-azure/pinot-azure-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See <http://www.slf4j.org/codes.html#multiple_bindings> for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (file:/opt/pinot/lib/pinot-all-1.0.0-jar-with-dependencies.jar) to method java.lang.Object.finalize()
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
2023/11/28 10:57:29.972 ERROR [LaunchDataIngestionJobCommand] [main] Got exception to kick off standalone data ingestion job - 
java.lang.RuntimeException: Caught exception during running - org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.kickoffIngestionJob(IngestionJobLauncher.java:152) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.runIngestionJob(IngestionJobLauncher.java:121) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.admin.command.LaunchDataIngestionJobCommand.execute(LaunchDataIngestionJobCommand.java:130) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.Command.call(Command.java:33) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.Command.call(Command.java:29) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine.executeUserObject(CommandLine.java:1953) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine.access$1300(CommandLine.java:145) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine.execute(CommandLine.java:2078) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.admin.PinotAdministrator.execute(PinotAdministrator.java:171) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.admin.PinotAdministrator.main(PinotAdministrator.java:202) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
Caused by: java.lang.RuntimeException: Failed to generate Pinot segment for file - <s3://tvlp-ds-pinot-dev/uapi-pinot/log_date=2023-02-27/log_hour=00/000095_0>
	at org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner.lambda$submitSegmentGenTask$1(SegmentGenerationJobRunner.java:287) ~[pinot-batch-ingestion-standalone-1.0.0-shaded.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
	at java.lang.Thread.run(Thread.java:829) ~[?:?]
Caused by: java.lang.IllegalArgumentException: Cannot convert value: '2023-11-28T10:55:52.079+0000' to type: LONG
	at org.apache.pinot.spi.data.FieldSpec$DataType.convert(FieldSpec.java:532) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.recordtransformer.NullValueTransformer.<init>(NullValueTransformer.java:76) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.recordtransformer.CompositeTransformer.getDefaultTransformer(CompositeTransformer.java:73) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.TransformPipeline.<init>(TransformPipeline.java:60) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl.init(SegmentIndexCreationDriverImpl.java:145) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl.init(SegmentIndexCreationDriverImpl.java:101) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.plugin.ingestion.batch.common.SegmentGenerationTaskRunner.run(SegmentGenerationTaskRunner.java:112) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner.lambda$submitSegmentGenTask$1(SegmentGenerationJobRunner.java:265) ~[pinot-batch-ingestion-standalone-1.0.0-shaded.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
	at java.lang.Thread.run(Thread.java:829) ~[?:?]
java.lang.RuntimeException: Caught exception during running - org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.kickoffIngestionJob(IngestionJobLauncher.java:152)
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.runIngestionJob(IngestionJobLauncher.java:121)
	at org.apache.pinot.tools.admin.command.LaunchDataIngestionJobCommand.execute(LaunchDataIngestionJobCommand.java:130)
	at org.apache.pinot.tools.Command.call(Command.java:33)
	at org.apache.pinot.tools.Command.call(Command.java:29)
	at picocli.CommandLine.executeUserObject(CommandLine.java:1953)
	at picocli.CommandLine.access$1300(CommandLine.java:145)
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2346)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2311)
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)
	at picocli.CommandLine.execute(CommandLine.java:2078)
	at org.apache.pinot.tools.admin.PinotAdministrator.execute(PinotAdministrator.java:171)
	at org.apache.pinot.tools.admin.PinotAdministrator.main(PinotAdministrator.java:202)
Caused by: java.lang.RuntimeException: Failed to generate Pinot segment for file - <s3://tvlp-ds-pinot-dev/uapi-pinot/log_date=2023-02-27/log_hour=00/000095_0>
	at org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner.lambda$submitSegmentGenTask$1(SegmentGenerationJobRunner.java:287)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.IllegalArgumentException: Cannot convert value: '2023-11-28T10:55:52.079+0000' to type: LONG
	at org.apache.pinot.spi.data.FieldSpec$DataType.convert(FieldSpec.java:532)
	at org.apache.pinot.segment.local.recordtransformer.NullValueTransformer.<init>(NullValueTransformer.java:76)
	at org.apache.pinot.segment.local.recordtransformer.CompositeTransformer.getDefaultTransformer(CompositeTransformer.java:73)
	at org.apache.pinot.segment.local.segment.creator.TransformPipeline.<init>(TransformPipeline.java:60)
	at org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl.init(SegmentIndexCreationDriverImpl.java:145)
	at org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl.init(SegmentIndexCreationDriverImpl.java:101)
	at org.apache.pinot.plugin.ingestion.batch.common.SegmentGenerationTaskRunner.run(SegmentGenerationTaskRunner.java:112)
	at org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner.lambda$submitSegmentGenTask$1(SegmentGenerationJobRunner.java:265)
	... 5 more
Table Define
Copy code
bash-4.2# cat pinot_table_config.json 

{
  "OFFLINE": {
    "tableName": "uapi_OFFLINE",
    "tableType": "OFFLINE",
    
    "segmentsConfig": {
      "schemaName": "uapi",
      "replication": "2",
      "replicasPerPartition": "2",
      "timeColumnName": "LOG_TS",
      "segmentPushFrequency": "HOURLY",
      "segmentPushType": "APPEND",
      "minimizeDataMovement": false
    },

    "tenants": {
      "broker": "DefaultTenant",
      "server": "DefaultTenant"
    },

    "tableIndexConfig": {
      "invertedIndexColumns": [],
      "noDictionaryColumns": [],
      "rangeIndexColumns": [],
      "rangeIndexVersion": 2,
      "autoGeneratedInvertedIndex": false,
      "createInvertedIndexDuringSegmentGeneration": false,
      "sortedColumn": [],
      "bloomFilterColumns": [],
      "loadMode": "MMAP",
      "onHeapDictionaryColumns": [],
      "varLengthDictionaryColumns": [],
      "enableDefaultStarTree": false,
      "enableDynamicStarTreeCreation": false,
      "aggregateMetrics": false,
      "nullHandlingEnabled": false,
      "optimizeDictionary": false,
      "optimizeDictionaryForMetrics": false,
      "noDictionarySizeRatioThreshold": 0.85
    },

    "metadata": {},
    "quota": {},
    "routing": {},
    "query": {},

    "ingestionConfig": {
      "continueOnError": false,
      "rowTimeValueCheck": false,
      "segmentTimeValueCheck": true
    },

    "isDimTable": false,

    "tableDataConfig": {
      "s3Config": {
        "s3BucketName": "xxx",
        "awsAccessKey": "xxxx",
        "awsSecretKey": "xxxx"
      },

      "proxyConfig": {
        "httpProxy": "xxxx:8080",
        "httpsProxy": "xxxx:8080",
        "ftpProxy": "xxxxx:8080"
      }
    }
  }
}
schema define
Copy code
bash-4.2# cat pinot_schema_config.json 
{
  "schemaName": "uapi",
  "dimensionFieldSpecs": [
    {
      "name": "log_id",
      "dataType": "STRING"
    },
    {
      "name": "date_id",
      "dataType": "STRING"
    },
    {
      "name": "time_id",
      "dataType": "INT"
    },
    {
      "name": "request_type_desc",
      "dataType": "STRING"
    },
    {
      "name": "success_ind",
      "dataType": "STRING"
    },
    {
      "name": "schema_version",
      "dataType": "STRING"
    },
    {
      "name": "agency_name",
      "dataType": "STRING"
    },
    {
      "name": "branch",
      "dataType": "STRING"
    },
    {
      "name": "target_branch",
      "dataType": "STRING"
    },
    {
      "name": "agent",
      "dataType": "STRING"
    },
    {
      "name": "pseudo_city_code",
      "dataType": "STRING"
    },
    {
      "name": "ur_locator_code",
      "dataType": "STRING"
    },
    {
      "name": "origin_application_code",
      "dataType": "STRING"
    },
    {
      "name": "provider_code",
      "dataType": "STRING"
    },
    {
      "name": "provider_code_list",
      "dataType": "STRING"
    },
    {
      "name": "supplier_code_list",
      "dataType": "STRING"
    },
    {
      "name": "total_number_of_travellers",
      "dataType": "INT"
    },
    {
      "name": "total_segments_booked",
      "dataType": "INT"
    },
    {
      "name": "total_segments_cancelled",
      "dataType": "INT"
    },
    {
      "name": "travel_origin",
      "dataType": "STRING"
    },
    {
      "name": "travel_destination",
      "dataType": "STRING"
    },
    {
      "name": "travel_startdate",
      "dataType": "STRING"
    },
    {
      "name": "travel_enddate",
      "dataType": "STRING"
    },
    {
      "name": "total_responsetime_ms",
      "dataType": "LONG"
    },
    {
      "name": "galileo_responsetime_ms",
      "dataType": "LONG"
    },
    {
      "name": "apollo_responsetime_ms",
      "dataType": "LONG"
    },
    {
      "name": "worldspan_responsetime_ms",
      "dataType": "LONG"
    },
    {
      "name": "axess_responsetime_ms",
      "dataType": "LONG"
    },
    {
      "name": "aircontent_responsetime_ms",
      "dataType": "LONG"
    },
    {
      "name": "railcontent_responsetime_ms",
      "dataType": "LONG"
    },
    {
      "name": "merchandising_responsetime_ms",
      "dataType": "LONG"
    },
    {
      "name": "services_responsetime_ms",
      "dataType": "LONG"
    },
    {
      "name": "trm_responsetime_ms",
      "dataType": "LONG"
    },
    {
      "name": "app_server_host",
      "dataType": "STRING"
    },
    {
      "name": "one_way_shop_ind",
      "dataType": "STRING"
    },
    {
      "name": "request_bytes",
      "dataType": "INT"
    },
    {
      "name": "response_bytes",
      "dataType": "INT"
    },
    {
      "name": "host_locator_code",
      "dataType": "STRING"
    },
    {
      "name": "optional_service_qty",
      "dataType": "INT"
    },
    {
      "name": "travel_segments",
      "dataType": "INT"
    },
    {
      "name": "travel_dates",
      "dataType": "STRING"
    },
    {
      "name": "supplier_locator_code",
      "dataType": "STRING"
    },
    {
      "name": "flight_number",
      "dataType": "STRING"
    },
    {
      "name": "class_of_service",
      "dataType": "STRING"
    },
    {
      "name": "availability_source",
      "dataType": "STRING"
    },
    {
      "name": "number_in_party",
      "dataType": "INT"
    },
    {
      "name": "air_segments_booked",
      "dataType": "INT"
    },
    {
      "name": "air_segments_cancelled",
      "dataType": "INT"
    },
    {
      "name": "hotel_code",
      "dataType": "STRING"
    },
    {
      "name": "hotel_search_by_addr_ind",
      "dataType": "STRING"
    },
    {
      "name": "hotel_segments_booked",
      "dataType": "INT"
    },
    {
      "name": "hotel_segments_cancelled",
      "dataType": "INT"
    },
    {
      "name": "car_segments_booked",
      "dataType": "INT"
    },
    {
      "name": "car_segments_cancelled",
      "dataType": "INT"
    },
    {
      "name": "request_base_price",
      "dataType": "DOUBLE"
    },
    {
      "name": "response_base_price",
      "dataType": "DOUBLE"
    },
    {
      "name": "base_difference_price",
      "dataType": "DOUBLE"
    },
    {
      "name": "request_total_price",
      "dataType": "DOUBLE"
    },
    {
      "name": "response_total_price",
      "dataType": "DOUBLE"
    },
    {
      "name": "total_difference_price",
      "dataType": "DOUBLE"
    },
    {
      "name": "ssl_term_region",
      "dataType": "STRING"
    },
    {
      "name": "error_level_code",
      "dataType": "STRING"
    },
    {
      "name": "error_code",
      "dataType": "STRING"
    },
    {
      "name": "error_type_code",
      "dataType": "STRING"
    },
    {
      "name": "error_text",
      "dataType": "STRING"
    },
    {
      "name": "soap_fault_text",
      "dataType": "STRING"
    },
    {
      "name": "etl_id",
      "dataType": "STRING"
    },
    {
      "name": "load_date",
      "dataType": "STRING"
    },
    {
      "name": "created_by",
      "dataType": "STRING"
    },
    {
      "name": "created_dt",
      "dataType": "STRING"
    },
    {
      "name": "updated_by",
      "dataType": "STRING"
    },
    {
      "name": "updated_dt",
      "dataType": "STRING"
    },
    {
      "name": "traceid",
      "dataType": "STRING"
    },
    {
      "name": "fare_rules_filter_category_codes",
      "dataType": "STRING"
    },
    {
      "name": "request_rate_plan_type",
      "dataType": "STRING"
    },
    {
      "name": "number_of_adults",
      "dataType": "INT"
    },
    {
      "name": "number_of_rooms",
      "dataType": "INT"
    },
    {
      "name": "guarantee_type",
      "dataType": "STRING"
    },
    {
      "name": "other_guarantee_info",
      "dataType": "STRING"
    },
    {
      "name": "response_rate_plan_type",
      "dataType": "STRING"
    },
    {
      "name": "response_message_code",
      "dataType": "STRING"
    },
    {
      "name": "booking_confirmation",
      "dataType": "STRING"
    },
    {
      "name": "status",
      "dataType": "STRING"
    },
    {
      "name": "language_code",
      "dataType": "STRING"
    },
    {
      "name": "pickup_location_type",
      "dataType": "STRING"
    },
    {
      "name": "return_location_type",
      "dataType": "STRING"
    },
    {
      "name": "pickup_location_number",
      "dataType": "INT"
    },
    {
      "name": "return_location_number",
      "dataType": "INT"
    },
    {
      "name": "rate_code",
      "dataType": "STRING"
    },
    {
      "name": "rate_category",
      "dataType": "STRING"
    },
    {
      "name": "rate_period",
      "dataType": "STRING"
    },
    {
      "name": "discount_number",
      "dataType": "INT"
    },
    {
      "name": "acriss_vehicle_code",
      "dataType": "STRING"
    },
    {
      "name": "rate_for_period",
      "dataType": "DOUBLE"
    },
    {
      "name": "base_rate",
      "dataType": "DOUBLE"
    },
    {
      "name": "cds_transaction_id",
      "dataType": "STRING"
    },
    {
      "name": "cds_execution_time",
      "dataType": "LONG"
    },
    {
      "name": "cds_success_failure_flag",
      "dataType": "STRING"
    },
    {
      "name": "cds_error_message",
      "dataType": "STRING"
    },
    {
      "name": "estimated_total_amount",
      "dataType": "DOUBLE"
    },
    {
      "name": "mandatory_charge_total",
      "dataType": "DOUBLE"
    },
    {
      "name": "air_conditioning",
      "dataType": "STRING"
    },
    {
      "name": "transmission_type",
      "dataType": "STRING"
    },
    {
      "name": "vehicle_class",
      "dataType": "STRING"
    },
    {
      "name": "category",
      "dataType": "STRING"
    },
    {
      "name": "vehicle_type",
      "dataType": "STRING"
    },
    {
      "name": "door_count",
      "dataType": "INT"
    },
    {
      "name": "aux1",
      "dataType": "STRING"
    },
    {
      "name": "aux2",
      "dataType": "STRING"
    },
    {
      "name": "aux3",
      "dataType": "STRING"
    },
    {
      "name": "cancellation_text",
      "dataType": "STRING"
    },
    {
      "name": "requested_negotiated_ratecodes_count",
      "dataType": "INT"
    },
    {
      "name": "rate_category_count",
      "dataType": "INT"
    },
    {
      "name": "number_of_rate_plan_types",
      "dataType": "INT"
    },
    {
      "name": "negotiated_rate_codes_in_response",
      "dataType": "STRING"
    },
    {
      "name": "response_negotiated_ratecode_count",
      "dataType": "INT"
    },
    {
      "name": "requested_vendor_location_count",
      "dataType": "INT"
    },
    {
      "name": "max_wait_time",
      "dataType": "INT"
    },
    {
      "name": "response_properties_count",
      "dataType": "INT"
    },
    {
      "name": "tax",
      "dataType": "DOUBLE"
    },
    {
      "name": "surcharge",
      "dataType": "DOUBLE"
    },
    {
      "name": "commision_indicator",
      "dataType": "STRING"
    },
    {
      "name": "percentage",
      "dataType": "DOUBLE"
    },
    {
      "name": "galileo_guarantee",
      "dataType": "STRING"
    },
    {
      "name": "galileo_deposit",
      "dataType": "STRING"
    },
    {
      "name": "worldspan_deposit_guarantee_prepayment",
      "dataType": "STRING"
    },
    {
      "name": "uapi_responsetime_ms",
      "dataType": "LONG"
    },
    {
      "name": "session_key",
      "dataType": "STRING"
    },
    {
      "name": "agency_country",
      "dataType": "STRING"
    },
    {
      "name": "source_ipaddress",
      "dataType": "STRING"
    },
    {
      "name": "ach_transactionid",
      "dataType": "STRING"
    },
    {
      "name": "db2_locktime",
      "dataType": "LONG"
    },
    {
      "name": "db2_number_of_locks",
      "dataType": "INT"
    },
    {
      "name": "override_pcc",
      "dataType": "STRING"
    },
    {
      "name": "meta_search",
      "dataType": "STRING"
    },
    {
      "name": "solution_result",
      "dataType": "STRING"
    },
    {
      "name": "ptc_list",
      "dataType": "STRING"
    }
  ],
  "dateTimeFieldSpecs": [
    {
      "name": "LOG_TS",
      "dataType": "LONG",
      "format": "1:MILLISECONDS:SIMPLE_DATE_FORMAT:yyyy-MM-dd'T'HH:mm:ss.SSSZ",
      "granularity": "1:MILLISECONDS"
    }
  ],
  "primaryKeyColumns": [
    "log_id"
  ]
}
with both approach we are seeing same behavior
i fixed the above issue
but i am get new error now
Copy code
[root@shldvatlb109 ~]# python3 uapi-pinot5.py 
[0.001s][warning][gc] -Xloggc is deprecated. Will use -Xlog:gc:gc-pinot-server.log instead.
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/pinot/lib/pinot-all-1.0.0-jar-with-dependencies.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-metrics/pinot-dropwizard/pinot-dropwizard-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-metrics/pinot-yammer/pinot-yammer-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-orc/pinot-orc-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-parquet/pinot-parquet-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-clp-log/pinot-clp-log-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-file-system/pinot-s3/pinot-s3-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-stream-ingestion/pinot-pulsar/pinot-pulsar-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-environment/pinot-azure/pinot-azure-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See <http://www.slf4j.org/codes.html#multiple_bindings> for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (file:/opt/pinot/lib/pinot-all-1.0.0-jar-with-dependencies.jar) to method java.lang.Object.finalize()
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
2023/11/28 18:18:52.671 ERROR [LaunchDataIngestionJobCommand] [main] Got exception to kick off standalone data ingestion job - 
java.lang.RuntimeException: Caught exception during running - org.apache.pinot.plugin.ingestion.batch.standalone.SegmentTarPushJobRunner
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.kickoffIngestionJob(IngestionJobLauncher.java:152) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.runIngestionJob(IngestionJobLauncher.java:122) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.admin.command.LaunchDataIngestionJobCommand.execute(LaunchDataIngestionJobCommand.java:130) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.Command.call(Command.java:33) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.Command.call(Command.java:29) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine.executeUserObject(CommandLine.java:1953) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine.access$1300(CommandLine.java:145) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine.execute(CommandLine.java:2078) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.admin.PinotAdministrator.execute(PinotAdministrator.java:171) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.admin.PinotAdministrator.main(PinotAdministrator.java:202) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
Caused by: java.lang.NullPointerException
	at org.apache.pinot.segment.local.utils.SegmentPushUtils.getSegmentUriToTarPathMap(SegmentPushUtils.java:366) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.plugin.ingestion.batch.common.BaseSegmentPushJobRunner.run(BaseSegmentPushJobRunner.java:143) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.kickoffIngestionJob(IngestionJobLauncher.java:150) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	... 13 more
java.lang.RuntimeException: Caught exception during running - org.apache.pinot.plugin.ingestion.batch.standalone.SegmentTarPushJobRunner
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.kickoffIngestionJob(IngestionJobLauncher.java:152)
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.runIngestionJob(IngestionJobLauncher.java:122)
	at org.apache.pinot.tools.admin.command.LaunchDataIngestionJobCommand.execute(LaunchDataIngestionJobCommand.java:130)
	at org.apache.pinot.tools.Command.call(Command.java:33)
	at org.apache.pinot.tools.Command.call(Command.java:29)
	at picocli.CommandLine.executeUserObject(CommandLine.java:1953)
	at picocli.CommandLine.access$1300(CommandLine.java:145)
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2346)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2311)
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)
	at picocli.CommandLine.execute(CommandLine.java:2078)
	at org.apache.pinot.tools.admin.PinotAdministrator.execute(PinotAdministrator.java:171)
	at org.apache.pinot.tools.admin.PinotAdministrator.main(PinotAdministrator.java:202)
Caused by: java.lang.NullPointerException
	at org.apache.pinot.segment.local.utils.SegmentPushUtils.getSegmentUriToTarPathMap(SegmentPushUtils.java:366)
	at org.apache.pinot.plugin.ingestion.batch.common.BaseSegmentPushJobRunner.run(BaseSegmentPushJobRunner.java:143)
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.kickoffIngestionJob(IngestionJobLauncher.java:150)
	... 13 more
x
You are missing a
pushJobSpec.pushFileNamePattern
field in your ingestion job yaml file
s
can you give me an example: here is my batch_ingestion_job_spec.yaml
Copy code
executionFrameworkSpec:
  name: 'standalone'
  segmentGenerationJobRunnerClassName: 'org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner'
  segmentTarPushJobRunnerClassName: 'org.apache.pinot.plugin.ingestion.batch.standalone.SegmentTarPushJobRunner'
  #  name: 'standalone'
  #  segmentGenerationJobRunnerClassName: 'org.apache.pinot.plugin.inputformat.thrift.ThriftSegmentGenerationJobRunner'
  #  segmentTarPushJobRunnerClassName: 'org.apache.pinot.plugin.inputformat.thrift.ThriftPushJobRunner'
jobType: SegmentCreationAndTarPush
inputDirURI: '<s3://tvlp-ds-pinot-dev/uapi-pinot/log_date=2023-02-27/log_hour=00/>'
includeFileNamePattern: 'glob:**/*'
outputDirURI: '<s3://tvlp-ds-pinot-dev/pinot_segments/>'
overwriteOutput: true
pinotFSSpecs:
  - scheme: s3
    className: org.apache.pinot.plugin.filesystem.S3PinotFS
    configs:
      region: us-east-1
recordReaderSpec:
  dataFormat: 'parquet'
  className: 'org.apache.pinot.plugin.inputformat.parquet.ParquetRecordReader'
  configClassName: 'org.apache.pinot.plugin.inputformat.parquet.ParquetRecordReaderConfig'
    #recordTransformerSpec:
    #  transformerClassName: 'org.apache.pinot.plugin.inputformat.thrift.ThriftRecordTransformer'
    #  dataSchema:
    #    dataSource: 'uapi'
    #    granularitySpec:
    #      dataType: 'LONG'
    #      segmentGranularity: 'HOUR'
    #      queryGranularity: 'NONE'
pinotClusterSpecs:
  - controllerURI: '<http://shldvatlb109.tvlport.net:9000>'
tableSpec:
  tableName: 'uapitest_OFFLINE'
    #s3Config:
    #  awsAccessKey: 'xxxxx'
    #  awsSecretKey: '/xxxx'
    #proxyConfig:
    #  httpProxy: '<http://xxxxx8080>'
    #  httpsProxy: '<http://xxxxx:8080>'
    #  ftpProxy: '<http://xxxxx:8080>'
x
Copy code
pushJobSpec:
  pushParallelism: 2
  pushAttempts: 2
  pushRetryIntervalMillis: 1000
  segmentUriPrefix : 'file://'
  segmentUriSuffix : my-dir/
  pushFileNamePattern : glob:\*\*2023-01\*
s
I finally made it, but here it store as tar.gz so now my question how i can make pinot table to read this? does it can read tar file?
I tried reading the data by creating offline table but no luck 😞
Copy code
{
  "OFFLINE": {
    "tableName": "uapitest_OFFLINE",
    "tableType": "OFFLINE",
    "segmentsConfig": {
      "schemaName": "uapitest",
      "replication": "2",
      "replicasPerPartition": "2",
      "timeColumnName": "LOG_TS",
      "segmentPushFrequency": "HOURLY",
      "segmentPushType": "APPEND",
      "minimizeDataMovement": false
    },
    "tenants": {
      "broker": "DefaultTenant",
      "server": "DefaultTenant"
    },
    "tableIndexConfig": {
      "invertedIndexColumns": [],
      "noDictionaryColumns": [],
      "rangeIndexColumns": [],
      "rangeIndexVersion": 2,
      "autoGeneratedInvertedIndex": false,
      "createInvertedIndexDuringSegmentGeneration": false,
      "sortedColumn": [],
      "bloomFilterColumns": [],
      "loadMode": "MMAP",
      "onHeapDictionaryColumns": [],
      "varLengthDictionaryColumns": [],
      "enableDefaultStarTree": false,
      "enableDynamicStarTreeCreation": false,
      "aggregateMetrics": false,
      "nullHandlingEnabled": false,
      "optimizeDictionary": false,
      "optimizeDictionaryForMetrics": false,
      "noDictionarySizeRatioThreshold": 0.85
    },
    "metadata": {},
    "quota": {},
    "routing": {},
    "query": {},
    "ingestionConfig": {
      "continueOnError": false,
      "rowTimeValueCheck": false,
      "segmentTimeValueCheck": true
    },
    "isDimTable": false,
    "tableDataConfig": {
      "recordReaderSpec": {
        "dataFormat": "tar",
        "className": "org.apache.pinot.plugin.inputformat.TarRecordReader",
        "configClassName": "org.apache.pinot.plugin.inputformat.TarRecordReaderConfig"
      },
      "pinotFSSpecs": [
        {
          "scheme": "s3",
          "className": "org.apache.pinot.plugin.filesystem.S3PinotFS",
          "configs": {
            "s3BucketName": "xxxxxx",
            "awsAccessKey": "xxxxx",
            "awsSecretKey": "/xxxxxx",
            "region": "us-east-1"
          }
        }
      ],
      "proxyConfig": {
        "httpProxy": "<http://xxxxx:8080>",
        "httpsProxy": "<http://xxxxx:8080>",
        "ftpProxy": "<http://xxxx:8080>"
      },
      "inputDirURI": "<s3://tvlp-ds-pinot-dev/pinot_segments/>",
      "includeFileNamePattern": "glob:**/*",
      "outputDirURI": "<s3://tvlp-ds-pinot-dev/pinot_segments/>",
      "overwriteOutput": true
    }
  }
}
@Xiang Fu I am doing anything wrong here?
does format in S3 (e.g.,
tar.gz
files) is supported by Pinot?
can you please help me of anything i need to update in offline table?
x
that’s why you need to put
pushJobSpec
that will push the tar.gz files to your pinot cluster
it’s segment generation and push job
s
i did alredy, after adding
pushJobSpec
it push to s3 with extention tar.gz
Copy code
executionFrameworkSpec:
  name: 'standalone'
  segmentGenerationJobRunnerClassName: 'org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner'
  segmentTarPushJobRunnerClassName: 'org.apache.pinot.plugin.ingestion.batch.standalone.SegmentTarPushJobRunner'
  #  name: 'standalone'
  #  segmentGenerationJobRunnerClassName: 'org.apache.pinot.plugin.inputformat.thrift.ThriftSegmentGenerationJobRunner'
  #  segmentTarPushJobRunnerClassName: 'org.apache.pinot.plugin.inputformat.thrift.ThriftPushJobRunner'
jobType: SegmentCreationAndTarPush
inputDirURI: '<s3://tvlp-ds-pinot-dev/uapi-pinot/log_date=2023-02-27/log_hour=00/>'
includeFileNamePattern: 'glob:**/*'
outputDirURI: '<s3://tvlp-ds-pinot-dev/pinot_segments/>'
overwriteOutput: true
pinotFSSpecs:
  - scheme: s3
    className: org.apache.pinot.plugin.filesystem.S3PinotFS
    configs:
      region: us-east-1
recordReaderSpec:
  dataFormat: 'parquet'
  className: 'org.apache.pinot.plugin.inputformat.parquet.ParquetRecordReader'
  configClassName: 'org.apache.pinot.plugin.inputformat.parquet.ParquetRecordReaderConfig'
    #recordTransformerSpec:
    #  transformerClassName: 'org.apache.pinot.plugin.inputformat.thrift.ThriftRecordTransformer'
    #  dataSchema:
    #    dataSource: 'uapi'
    #    granularitySpec:
    #      dataType: 'LONG'
    #      segmentGranularity: 'HOUR'
    #      queryGranularity: 'NONE'
pinotClusterSpecs:
  - controllerURI: '<http://shldvatlb109.tvlport.net:9000>'
tableSpec:
  tableName: 'uapitest_OFFLINE'
    #s3Config:
    #  awsAccessKey: 'xxxx'
    #  awsSecretKey: 'xxxxx'
    #proxyConfig:
    #  httpProxy: 'xxxxx:8080'
    #  httpsProxy: 'xxxxx:8080'
    #  ftpProxy: 'xxxxx:8080'
pushJobSpec:
  pushParallelism: 2
  pushAttempts: 2
  pushRetryIntervalMillis: 1000
  segmentUriPrefix : '<s3://tvlp-ds-pinot-dev/pinot_segments/>'
  segmentUriSuffix : my-dir/
  pushFileNamePattern : 'glob:**/*2023-02-27*'
here how it is, but pinot table could't able to read this yet
x
push job spec should send tar gz files to pinot controller. can you show me the job logs
s
which job logs are you talking about?
x
segment creation job
that job should push tar gz files
oh, I think I know
just do:
Copy code
pushJobSpec:
  pushAttempts: 2
  pushRetryIntervalMillis: 1000
you can make
outputDirURI
to
Copy code
outputDirURI: '<s3://tvlp-ds-pinot-dev/pinot_segments/2023/02/27/00/>'
s
i have python code it does conversion but i don't see much logs but here are some logs from pinot.log
Copy code
2023/11/22 19:51:16.434 INFO [PluginManager] [main] Successfully Loaded plugin [pinot-kafka-2.0] from dir [/opt/pinot/plugins/pinot-stream-ingestion/pinot-kafka-2.0]
2023/11/22 19:51:16.434 INFO [PluginManager] [main] Trying to load plugin [pinot-avro] from location [/opt/pinot/plugins/pinot-input-format/pinot-avro]
2023/11/22 19:51:16.434 INFO [PluginManager] [main] Successfully loaded plugin [pinot-avro] from jar files: [file:/opt/pinot/plugins/pinot-input-format/pinot-avro/pinot-avro-1.0.0-shaded.jar]
2023/11/22 19:51:16.435 INFO [PluginManager] [main] Successfully Loaded plugin [pinot-avro] from dir [/opt/pinot/plugins/pinot-input-format/pinot-avro]
2023/11/22 19:51:16.435 INFO [PluginManager] [main] Trying to load plugin [pinot-csv] from location [/opt/pinot/plugins/pinot-input-format/pinot-csv]
2023/11/22 19:51:16.435 INFO [PluginManager] [main] Successfully loaded plugin [pinot-csv] from jar files: [file:/opt/pinot/plugins/pinot-input-format/pinot-csv/pinot-csv-1.0.0-shaded.jar]
2023/11/22 19:51:16.435 INFO [PluginManager] [main] Successfully Loaded plugin [pinot-csv] from dir [/opt/pinot/plugins/pinot-input-format/pinot-csv]
2023/11/22 19:51:16.435 INFO [PluginManager] [main] Trying to load plugin [pinot-s3] from location [/opt/pinot/plugins/pinot-file-system/pinot-s3]
2023/11/22 19:51:16.435 INFO [PluginManager] [main] Successfully loaded plugin [pinot-s3] from jar files: [file:/opt/pinot/plugins/pinot-file-system/pinot-s3/pinot-s3-1.0.0-shaded.jar]
2023/11/22 19:51:16.436 INFO [PluginManager] [main] Successfully Loaded plugin [pinot-s3] from dir [/opt/pinot/plugins/pinot-file-system/pinot-s3]
2023/11/22 19:51:16.436 INFO [PluginManager] [main] Trying to load plugin [pinot-segment-uploader-default] from location [/opt/pinot/plugins/pinot-segment-uploader/pinot-segment-uploader-default]
2023/11/22 19:51:16.436 INFO [PluginManager] [main] Successfully loaded plugin [pinot-segment-uploader-default] from jar files: [file:/opt/pinot/plugins/pinot-segment-uploader/pinot-segment-uploader-default/pinot-segment-uploader-default-1.0.0.jar]
2023/11/22 19:51:16.436 INFO [PluginManager] [main] Successfully Loaded plugin [pinot-segment-uploader-default] from dir [/opt/pinot/plugins/pinot-segment-uploader/pinot-segment-uploader-default]
2023/11/22 19:51:16.436 INFO [PluginManager] [main] Trying to load plugin [pinot-yammer] from location [/opt/pinot/plugins/pinot-metrics/pinot-yammer]
2023/11/22 19:51:16.437 INFO [PluginManager] [main] Successfully loaded plugin [pinot-yammer] from jar files: [file:/opt/pinot/plugins/pinot-metrics/pinot-yammer/pinot-yammer-1.0.0-shaded.jar]
2023/11/22 19:51:16.437 INFO [PluginManager] [main] Successfully Loaded plugin [pinot-yammer] from dir [/opt/pinot/plugins/pinot-metrics/pinot-yammer]
2023/11/22 19:51:16.437 INFO [PluginManager] [main] Trying to load plugin [pinot-batch-ingestion-standalone] from location [/opt/pinot/plugins/pinot-batch-ingestion/pinot-batch-ingestion-standalone]
2023/11/22 19:51:16.437 INFO [PluginManager] [main] Successfully loaded plugin [pinot-batch-ingestion-standalone] from jar files: [file:/opt/pinot/plugins/pinot-batch-ingestion/pinot-batch-ingestion-standalone/pinot-batch-ingestion-standalone-1.0.0-shaded.jar]
2023/11/22 19:51:16.437 INFO [PluginManager] [main] Successfully Loaded plugin [pinot-batch-ingestion-standalone] from dir [/opt/pinot/plugins/pinot-batch-ingestion/pinot-batch-ingestion-standalone]
2023/11/22 19:51:16.437 INFO [PluginManager] [main] Trying to load plugin [pinot-confluent-avro] from location [/opt/pinot/plugins/pinot-input-format/pinot-confluent-avro]
2023/11/22 19:51:16.438 INFO [PluginManager] [main] Successfully loaded plugin [pinot-confluent-avro] from jar files: [file:/opt/pinot/plugins/pinot-input-format/pinot-confluent-avro/pinot-confluent-avro-1.0.0-shaded.jar]
2023/11/22 19:51:16.438 INFO [PluginManager] [main] Successfully Loaded plugin [pinot-confluent-avro] from dir [/opt/pinot/plugins/pinot-input-format/pinot-confluent-avro]
2023/11/22 19:51:16.438 INFO [PluginManager] [main] Trying to load plugin [pinot-thrift] from location [/opt/pinot/plugins/pinot-input-format/pinot-thrift]
2023/11/22 19:51:16.438 INFO [PluginManager] [main] Successfully loaded plugin [pinot-thrift] from jar files: [file:/opt/pinot/plugins/pinot-input-format/pinot-thrift/pinot-thrift-1.0.0-shaded.jar]
2023/11/22 19:51:16.438 INFO [PluginManager] [main] Successfully Loaded plugin [pinot-thrift] from dir [/opt/pinot/plugins/pinot-input-format/pinot-thrift]
2023/11/22 19:51:16.438 INFO [PluginManager] [main] Trying to load plugin [pinot-orc] from location [/opt/pinot/plugins/pinot-input-format/pinot-orc]
2023/11/22 19:51:16.439 INFO [PluginManager] [main] Successfully loaded plugin [pinot-orc] from jar files: [file:/opt/pinot/plugins/pinot-input-format/pinot-orc/pinot-orc-1.0.0-shaded.jar]
2023/11/22 19:51:16.439 INFO [PluginManager] [main] Successfully Loaded plugin [pinot-orc] from dir [/opt/pinot/plugins/pinot-input-format/pinot-orc]
2023/11/22 19:51:16.439 INFO [PluginManager] [main] Trying to load plugin [pinot-clp-log] from location [/opt/pinot/plugins/pinot-input-format/pinot-clp-log]
2023/11/22 19:51:16.439 INFO [PluginManager] [main] Successfully loaded plugin [pinot-clp-log] from jar files: [file:/opt/pinot/plugins/pinot-input-format/pinot-clp-log/pinot-clp-log-1.0.0-shaded.jar]
x
this
outputDirURI
is your s3 tar gz store location
s
Copy code
pushJobSpec:
  pushParallelism: 2
  pushAttempts: 2
  pushRetryIntervalMillis: 1000
  segmentUriPrefix : '<s3://tvlp-ds-pinot-dev/pinot_segments/2023/02/27/00/>'
is this good?
x
no need
segmentUriPrefix
push job will fetch all targz files under
outputDirURI
to push
you can also do metadata push
which is for s3 uri
s
Copy code
pushJobSpec:
  pushParallelism: 2
  pushAttempts: 2
  pushRetryIntervalMillis: 1000
  outputDirURI: '<s3://tvlp-ds-pinot-dev/pinot_segments/2023/02/27/00/>'
is this looks good?
i tried untar the file from s3 i see below content there
Copy code
/tmp/uapitest_OFFLINE_2023-11-28-20_2023-11-28-20_9/v3
# ll
total 124
-rw-r--r-- 1 root root  3748 Nov 28 20:30 columns.psf
-rw-r--r-- 1 root root    16 Nov 28 20:30 creation.meta
-rw-r--r-- 1 root root 23039 Nov 28 20:30 index_map
-rw-r--r-- 1 root root 91329 Nov 28 20:30 metadata.properties
x
Copy code
executionFrameworkSpec:
  name: 'standalone'
  segmentGenerationJobRunnerClassName: 'org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner'
  segmentTarPushJobRunnerClassName: 'org.apache.pinot.plugin.ingestion.batch.standalone.SegmentTarPushJobRunner'
  segmentMetadataPushJobRunnerClassName: 'org.apache.pinot.plugin.ingestion.batch.standalone.SegmentMetadataPushJobRunner'
  #  name: 'standalone'
  #  segmentGenerationJobRunnerClassName: 'org.apache.pinot.plugin.inputformat.thrift.ThriftSegmentGenerationJobRunner'
  #  segmentTarPushJobRunnerClassName: 'org.apache.pinot.plugin.inputformat.thrift.ThriftPushJobRunner'
jobType: SegmentCreationAndMetadataPush
inputDirURI: '<s3://tvlp-ds-pinot-dev/uapi-pinot/log_date=2023-02-27/log_hour=00/>'
includeFileNamePattern: 'glob:**/*'
outputDirURI: '<s3://tvlp-ds-pinot-dev/pinot_segments/>'
overwriteOutput: true
pinotFSSpecs:
  - scheme: s3
    className: org.apache.pinot.plugin.filesystem.S3PinotFS
    configs:
      region: us-east-1
recordReaderSpec:
  dataFormat: 'parquet'
  className: 'org.apache.pinot.plugin.inputformat.parquet.ParquetRecordReader'
  configClassName: 'org.apache.pinot.plugin.inputformat.parquet.ParquetRecordReaderConfig'
    #recordTransformerSpec:
    #  transformerClassName: 'org.apache.pinot.plugin.inputformat.thrift.ThriftRecordTransformer'
    #  dataSchema:
    #    dataSource: 'uapi'
    #    granularitySpec:
    #      dataType: 'LONG'
    #      segmentGranularity: 'HOUR'
    #      queryGranularity: 'NONE'
pinotClusterSpecs:
  - controllerURI: '<http://shldvatlb109.tvlport.net:9000>'
tableSpec:
  tableName: 'uapitest_OFFLINE'
    #s3Config:
    #  awsAccessKey: 'xxxx'
    #  awsSecretKey: 'xxxxx'
    #proxyConfig:
    #  httpProxy: 'xxxxx:8080'
    #  httpsProxy: 'xxxxx:8080'
    #  ftpProxy: 'xxxxx:8080'
pushJobSpec:
  pushAttempts: 2
  pushRetryIntervalMillis: 1000
top level
Copy code
outputDirURI: '<s3://tvlp-ds-pinot-dev/pinot_segments/>'
is used
s
ah ok
x
also I changed to use
jobType: SegmentCreationAndMetadataPush
and added
segmentMetadataPushJobRunnerClassName: 'org.apache.pinot.plugin.ingestion.batch.standalone.SegmentMetadataPushJobRunner'
I assume your pinot controller and pinot server should have access to your s3 deep store right
s
i define this in table, is that good enough?
x
I think you need to define it in pinot controller and server config
pinotFS configs
s
I see
sure I will do that, do you have an example?
x
or you can still use
jobType:SegmentCreationAndTarPush
and ensure you only have 1 controller
then you are also good
s
ok
s
qq, does pinot will able to read the tar.gz data?
x
no, it won’t. targz is used as deep store backup
pinot server will download tar gz files, uncompress them then load
s
i was not sure where it does uncompress, i just start the job with below config,
Copy code
executionFrameworkSpec:
  name: 'standalone'
  segmentGenerationJobRunnerClassName: 'org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner'
  segmentTarPushJobRunnerClassName: 'org.apache.pinot.plugin.ingestion.batch.standalone.SegmentTarPushJobRunner'
  segmentMetadataPushJobRunnerClassName: 'org.apache.pinot.plugin.ingestion.batch.standalone.SegmentMetadataPushJobRunner'
  #  name: 'standalone'
  #  segmentGenerationJobRunnerClassName: 'org.apache.pinot.plugin.inputformat.thrift.ThriftSegmentGenerationJobRunner'
  #  segmentTarPushJobRunnerClassName: 'org.apache.pinot.plugin.inputformat.thrift.ThriftPushJobRunner'
jobType: SegmentCreationAndTarPush
inputDirURI: '<s3://tvlp-ds-pinot-dev/uapi-pinot/log_date=2023-02-27/log_hour=00/>'
includeFileNamePattern: 'glob:**/*'
outputDirURI: '<s3://tvlp-ds-pinot-dev/pinot_segments/>'
overwriteOutput: true
pinotFSSpecs:
  - scheme: s3
    className: org.apache.pinot.plugin.filesystem.S3PinotFS
    configs:
      region: us-east-1
recordReaderSpec:
  dataFormat: 'parquet'
  className: 'org.apache.pinot.plugin.inputformat.parquet.ParquetRecordReader'
  configClassName: 'org.apache.pinot.plugin.inputformat.parquet.ParquetRecordReaderConfig'
    #recordTransformerSpec:
    #  transformerClassName: 'org.apache.pinot.plugin.inputformat.thrift.ThriftRecordTransformer'
    #  dataSchema:
    #    dataSource: 'uapi'
    #    granularitySpec:
    #      dataType: 'LONG'
    #      segmentGranularity: 'HOUR'
    #      queryGranularity: 'NONE'
pinotClusterSpecs:
  - controllerURI: '<http://shldvatlb109.tvlport.net:9000>'
tableSpec:
  tableName: 'uapitest_OFFLINE'
    #s3Config:
    #  awsAccessKey: 'xxxx'
    #  awsSecretKey: 'xxxxx'
    #proxyConfig:
    #  httpProxy: 'xxxxx:8080'
    #  httpsProxy: 'xxxxx:8080'
    #  ftpProxy: 'xxxxx:8080'
pushJobSpec:
  pushAttempts: 2
  pushRetryIntervalMillis: 1000
x
pinot will do it automatically
s
ok
I can see the data getting converting into pinot segments, but still pinot is not able to read this table.
here is latest file we have
Copy code
executionFrameworkSpec:
  name: 'standalone'
  segmentGenerationJobRunnerClassName: 'org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner'
  segmentTarPushJobRunnerClassName: 'org.apache.pinot.plugin.ingestion.batch.standalone.SegmentTarPushJobRunner'
  segmentMetadataPushJobRunnerClassName: 'org.apache.pinot.plugin.ingestion.batch.standalone.SegmentMetadataPushJobRunner'
  #  name: 'standalone'
  #  segmentGenerationJobRunnerClassName: 'org.apache.pinot.plugin.inputformat.thrift.ThriftSegmentGenerationJobRunner'
  #  segmentTarPushJobRunnerClassName: 'org.apache.pinot.plugin.inputformat.thrift.ThriftPushJobRunner'
jobType: SegmentCreationAndTarPush
inputDirURI: '<s3://tvlp-ds-pinot-dev/uapi-pinot/log_date=2023-02-27/log_hour=01/>'
includeFileNamePattern: 'glob:**/*'
outputDirURI: '<s3://tvlp-ds-pinot-dev/pinot_segments/>'
overwriteOutput: true
pinotFSSpecs:
  - scheme: s3
    className: org.apache.pinot.plugin.filesystem.S3PinotFS
    configs:
      region: us-east-1
recordReaderSpec:
  dataFormat: 'parquet'
  className: 'org.apache.pinot.plugin.inputformat.parquet.ParquetRecordReader'
  configClassName: 'org.apache.pinot.plugin.inputformat.parquet.ParquetRecordReaderConfig'
    #recordTransformerSpec:
    #  transformerClassName: 'org.apache.pinot.plugin.inputformat.thrift.ThriftRecordTransformer'
    #  dataSchema:
    #    dataSource: 'uapi'
    #    granularitySpec:
    #      dataType: 'LONG'
    #      segmentGranularity: 'HOUR'
    #      queryGranularity: 'NONE'
pinotClusterSpecs:
  - controllerURI: '<http://shldvatlb109.tvlport.net:9000>'
tableSpec:
  tableName: 'uapitest_OFFLINE'
    #s3Config:
    #  awsAccessKey: 'xxxx'
    #  awsSecretKey: 'xxxxx'
    #proxyConfig:
    #  httpProxy: 'xxxxx:8080'
    #  httpsProxy: 'xxxxx:8080'
    #  ftpProxy: 'xxxxx:8080'
pushJobSpec:
  pushAttempts: 2
  pushRetryIntervalMillis: 1000
but during the run i see below exception
Copy code
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/pinot/lib/pinot-all-1.0.0-jar-with-dependencies.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-metrics/pinot-dropwizard/pinot-dropwizard-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-metrics/pinot-yammer/pinot-yammer-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-orc/pinot-orc-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-parquet/pinot-parquet-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-clp-log/pinot-clp-log-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-file-system/pinot-s3/pinot-s3-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-stream-ingestion/pinot-pulsar/pinot-pulsar-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-environment/pinot-azure/pinot-azure-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See <http://www.slf4j.org/codes.html#multiple_bindings> for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (file:/opt/pinot/lib/pinot-all-1.0.0-jar-with-dependencies.jar) to method java.lang.Object.finalize()
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
2023/11/29 15:42:57.864 ERROR [LaunchDataIngestionJobCommand] [main] Got exception to kick off standalone data ingestion job - 
java.lang.RuntimeException: Caught exception during running - org.apache.pinot.plugin.ingestion.batch.standalone.SegmentTarPushJobRunner
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.kickoffIngestionJob(IngestionJobLauncher.java:152) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.runIngestionJob(IngestionJobLauncher.java:122) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.admin.command.LaunchDataIngestionJobCommand.execute(LaunchDataIngestionJobCommand.java:130) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.Command.call(Command.java:33) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.Command.call(Command.java:29) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine.executeUserObject(CommandLine.java:1953) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine.access$1300(CommandLine.java:145) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine.execute(CommandLine.java:2078) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.admin.PinotAdministrator.execute(PinotAdministrator.java:171) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.admin.PinotAdministrator.main(PinotAdministrator.java:202) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
Caused by: org.apache.pinot.spi.utils.retry.AttemptsExceededException: Operation failed after 2 attempts
	at org.apache.pinot.spi.utils.retry.BaseRetryPolicy.attempt(BaseRetryPolicy.java:65) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.utils.SegmentPushUtils.pushSegments(SegmentPushUtils.java:173) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.utils.SegmentPushUtils.pushSegments(SegmentPushUtils.java:106) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.plugin.ingestion.batch.standalone.SegmentTarPushJobRunner.uploadSegments(SegmentTarPushJobRunner.java:64) ~[pinot-batch-ingestion-standalone-1.0.0-shaded.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.plugin.ingestion.batch.common.BaseSegmentPushJobRunner.run(BaseSegmentPushJobRunner.java:148) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.kickoffIngestionJob(IngestionJobLauncher.java:150) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	... 13 more
java.lang.RuntimeException: Caught exception during running - org.apache.pinot.plugin.ingestion.batch.standalone.SegmentTarPushJobRunner
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.kickoffIngestionJob(IngestionJobLauncher.java:152)
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.runIngestionJob(IngestionJobLauncher.java:122)
	at org.apache.pinot.tools.admin.command.LaunchDataIngestionJobCommand.execute(LaunchDataIngestionJobCommand.java:130)
	at org.apache.pinot.tools.Command.call(Command.java:33)
	at org.apache.pinot.tools.Command.call(Command.java:29)
	at picocli.CommandLine.executeUserObject(CommandLine.java:1953)
	at picocli.CommandLine.access$1300(CommandLine.java:145)
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2346)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2311)
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)
	at picocli.CommandLine.execute(CommandLine.java:2078)
	at org.apache.pinot.tools.admin.PinotAdministrator.execute(PinotAdministrator.java:171)
	at org.apache.pinot.tools.admin.PinotAdministrator.main(PinotAdministrator.java:202)
Caused by: org.apache.pinot.spi.utils.retry.AttemptsExceededException: Operation failed after 2 attempts
	at org.apache.pinot.spi.utils.retry.BaseRetryPolicy.attempt(BaseRetryPolicy.java:65)
	at org.apache.pinot.segment.local.utils.SegmentPushUtils.pushSegments(SegmentPushUtils.java:173)
	at org.apache.pinot.segment.local.utils.SegmentPushUtils.pushSegments(SegmentPushUtils.java:106)
	at org.apache.pinot.plugin.ingestion.batch.standalone.SegmentTarPushJobRunner.uploadSegments(SegmentTarPushJobRunner.java:64)
	at org.apache.pinot.plugin.ingestion.batch.common.BaseSegmentPushJobRunner.run(BaseSegmentPushJobRunner.java:148)
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.kickoffIngestionJob(IngestionJobLauncher.java:150)
	... 13 more
x
do you have more logs from the ingestion job? Also any logs from controller with error?
the error says that there is some error during pushing segments to pinot
s
I don't see any logs here in controller
Copy code
2023/11/29 23:41:36.257 ERROR [RecordReaderSegmentCreationDataSource] [pool-3-thread-1] Caught exception while gathering stats
java.lang.RuntimeException: Caught exception while transforming data type for column: surcharge
	at org.apache.pinot.segment.local.recordtransformer.DataTypeTransformer.transform(DataTypeTransformer.java:112) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.recordtransformer.CompositeTransformer.transform(CompositeTransformer.java:95) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.TransformPipeline.processPlainRow(TransformPipeline.java:97) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.TransformPipeline.processRow(TransformPipeline.java:92) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.RecordReaderSegmentCreationDataSource.gatherStats(RecordReaderSegmentCreationDataSource.java:67) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.RecordReaderSegmentCreationDataSource.gatherStats(RecordReaderSegmentCreationDataSource.java:37) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl.init(SegmentIndexCreationDriverImpl.java:173) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl.init(SegmentIndexCreationDriverImpl.java:145) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl.init(SegmentIndexCreationDriverImpl.java:101) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.plugin.ingestion.batch.common.SegmentGenerationTaskRunner.run(SegmentGenerationTaskRunner.java:112) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner.lambda$submitSegmentGenTask$1(SegmentGenerationJobRunner.java:265) ~[pinot-batch-ingestion-standalone-1.0.0-shaded.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]
Caused by: java.lang.NumberFormatException: empty String
	at jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842) ~[?:?]
	at jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110) ~[?:?]
	at java.lang.Double.parseDouble(Double.java:543) ~[?:?]
	at org.apache.pinot.common.utils.PinotDataType$11.toDouble(PinotDataType.java:622) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.common.utils.PinotDataType$8.convert(PinotDataType.java:478) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.common.utils.PinotDataType$8.convert(PinotDataType.java:426) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.recordtransformer.DataTypeTransformer.transform(DataTypeTransformer.java:106) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	... 15 more
2023/11/29 23:43:16.485 ERROR [LaunchDataIngestionJobCommand] [main] Got exception to kick off standalone data ingestion job - 
java.lang.RuntimeException: Caught exception during running - org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.kickoffIngestionJob(IngestionJobLauncher.java:152) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.runIngestionJob(IngestionJobLauncher.java:121) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.admin.command.LaunchDataIngestionJobCommand.execute(LaunchDataIngestionJobCommand.java:130) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.Command.call(Command.java:33) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.Command.call(Command.java:29) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine.executeUserObject(CommandLine.java:1953) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine.access$1300(CommandLine.java:145) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at picocli.CommandLine.execute(CommandLine.java:2078) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.admin.PinotAdministrator.execute(PinotAdministrator.java:171) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.tools.admin.PinotAdministrator.main(PinotAdministrator.java:202) [pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
Caused by: java.lang.RuntimeException: Failed to generate Pinot segment for file - <s3://tvlp-ds-pinot-dev/uapi-pinot/log_date=2023-02-27/log_hour=01/000053_0>
	at org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner.lambda$submitSegmentGenTask$1(SegmentGenerationJobRunner.java:287) ~[pinot-batch-ingestion-standalone-1.0.0-shaded.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
	at java.lang.Thread.run(Thread.java:829) ~[?:?]
Caused by: java.lang.RuntimeException: Caught exception while transforming data type for column: surcharge
	at org.apache.pinot.segment.local.recordtransformer.DataTypeTransformer.transform(DataTypeTransformer.java:112) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.recordtransformer.CompositeTransformer.transform(CompositeTransformer.java:95) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.TransformPipeline.processPlainRow(TransformPipeline.java:97) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.TransformPipeline.processRow(TransformPipeline.java:92) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.RecordReaderSegmentCreationDataSource.gatherStats(RecordReaderSegmentCreationDataSource.java:67) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.RecordReaderSegmentCreationDataSource.gatherStats(RecordReaderSegmentCreationDataSource.java:37) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl.init(SegmentIndexCreationDriverImpl.java:173) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl.init(SegmentIndexCreationDriverImpl.java:145) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl.init(SegmentIndexCreationDriverImpl.java:101) ~
Copy code
[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.plugin.ingestion.batch.common.SegmentGenerationTaskRunner.run(SegmentGenerationTaskRunner.java:112) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner.lambda$submitSegmentGenTask$1(SegmentGenerationJobRunner.java:265) ~[pinot-batch-ingestion-standalone-1.0.0-shaded.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
	at java.lang.Thread.run(Thread.java:829) ~[?:?]
Caused by: java.lang.NumberFormatException: empty String
	at jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842) ~[?:?]
	at jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110) ~[?:?]
	at java.lang.Double.parseDouble(Double.java:543) ~[?:?]
	at org.apache.pinot.common.utils.PinotDataType$11.toDouble(PinotDataType.java:622) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.common.utils.PinotDataType$8.convert(PinotDataType.java:478) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.common.utils.PinotDataType$8.convert(PinotDataType.java:426) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.recordtransformer.DataTypeTransformer.transform(DataTypeTransformer.java:106) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.recordtransformer.CompositeTransformer.transform(CompositeTransformer.java:95) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.TransformPipeline.processPlainRow(TransformPipeline.java:97) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.TransformPipeline.processRow(TransformPipeline.java:92) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.RecordReaderSegmentCreationDataSource.gatherStats(RecordReaderSegmentCreationDataSource.java:67) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.RecordReaderSegmentCreationDataSource.gatherStats(RecordReaderSegmentCreationDataSource.java:37) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl.init(SegmentIndexCreationDriverImpl.java:173) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl.init(SegmentIndexCreationDriverImpl.java:145) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl.init(SegmentIndexCreationDriverImpl.java:101) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.plugin.ingestion.batch.common.SegmentGenerationTaskRunner.run(SegmentGenerationTaskRunner.java:112) ~[pinot-all-1.0.0-jar-with-dependencies.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner.lambda$submitSegmentGenTask$1(SegmentGenerationJobRunner.java:265) ~[pinot-batch-ingestion-standalone-1.0.0-shaded.jar:1.0.0-b6bdf6c9686b286a149d2d1aea4a385ee98f3e79]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
	at java.lang.Thread.run(Thread.java:829) ~[?:?]
java.lang.RuntimeException: Caught exception during running - org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.kickoffIngestionJob(IngestionJobLauncher.java:152)
	at org.apache.pinot.spi.ingestion.batch.IngestionJobLauncher.runIngestionJob(IngestionJobLauncher.java:121)
	at org.apache.pinot.tools.admin.command.LaunchDataIngestionJobCommand.execute(LaunchDataIngestionJobCommand.java:130)
	at org.apache.pinot.tools.Command.call(Command.java:33)
	at org.apache.pinot.tools.Command.call(Command.java:29)
	at picocli.CommandLine.executeUserObject(CommandLine.java:1953)
	at picocli.CommandLine.access$1300(CommandLine.java:145)
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2346)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2311)
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)
	at picocli.CommandLine.execute(CommandLine.java:2078)
	at org.apache.pinot.tools.admin.PinotAdministrator.execute(PinotAdministrator.java:171)
	at org.apache.pinot.tools.admin.PinotAdministrator.main(PinotAdministrator.java:202)
Caused by: java.lang.RuntimeException: Failed to generate Pinot segment for file - <s3://tvlp-ds-pinot-dev/uapi-pinot/log_date=2023-02-27/log_hour=01/000053_0>
	at org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner.lambda$submitSegmentGenTask$1(SegmentGenerationJobRunner.java:287)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.RuntimeException: Caught exception while transforming data type for column: surcharge
	at org.apache.pinot.segment.local.recordtransformer.DataTypeTransformer.transform(DataTypeTransformer.java:112)
	at org.apache.pinot.segment.local.recordtransformer.CompositeTransformer.transform(CompositeTransformer.java:95)
	at org.apache.pinot.segment.local.segment.creator.TransformPipeline.processPlainRow(TransformPipeline.java:97)
	at org.apache.pinot.segment.local.segment.creator.TransformPipeline.processRow(TransformPipeline.java:92)
	at org.apache.pinot.segment.local.segment.creator.RecordReaderSegmentCreationDataSource.gatherStats(RecordReaderSegmentCreationDataSource.java:67)
	at org.apache.pinot.segment.local.segment.creator.RecordReaderSegmentCreationDataSource.gatherStats(RecordReaderSegmentCreationDataSource.java:37)
	at org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl.init(SegmentIndexCreationDriverImpl.java:173)
	at org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl.init(SegmentIndexCreationDriverImpl.java:145)
	at org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl.init(SegmentIndexCreationDriverImpl.java:101)
	at org.apache.pinot.plugin.ingestion.batch.common.SegmentGenerationTaskRunner.run(SegmentGenerationTaskRunner.java:112)
	at org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner.lambda$submitSegmentGenTask$1(SegmentGenerationJobRunner.java:265)
	... 5 more
Caused by: java.lang.NumberFormatException: empty String
	at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
	at java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
	at java.base/java.lang.Double.parseDouble(Double.java:543)
	at org.apache.pinot.common.utils.PinotDataType$11.toDouble(PinotDataType.java:622)
	at org.apache.pinot.common.utils.PinotDataType$8.convert(PinotDataType.java:478)
	at org.apache.pinot.common.utils.PinotDataType$8.convert(PinotDataType.java:426)
	at org.apache.pinot.segment.local.recordtransformer.DataTypeTransformer.transform(DataTypeTransformer.java:106)
	... 15 more
in controller i just see
Copy code
-11-thread-5] Starting TaskMetricsEmitter with running frequency of 300 seconds.
2023/11/29 23:36:32.927 INFO [BasePeriodicTask] [pool-11-thread-5] [TaskRequestId: auto] Start running task: TaskMetricsEmitter
2023/11/29 23:36:32.931 INFO [BasePeriodicTask] [pool-11-thread-5] [TaskRequestId: auto] Finish running task: TaskMetricsEmitter in 4ms
2023/11/29 23:37:23.149 INFO [LeadControllerUtils] [ControllerLeadershipFetchingThread] Getting Helix leader: 172.19.0.3_9000, Helix version: 1.0.4, mtime: 1699641101367
2023/11/29 23:37:49.147 INFO [ControllerResponseFilter] [grizzly-http-server-14] Handled request from 172.31.172.141 GET <http://shldvatlb109.tvlport.net:9000/tables/uapitest/schema>, content-type null status code 200 OK
2023/11/29 23:37:49.214 INFO [PinotQueryResource] [grizzly-http-server-12] url string passed is : <http://172.19.0.4:8099/query/sql>
2023/11/29 23:37:49.223 INFO [PinotQueryResource] [grizzly-http-server-12] Query: select * from uapitest limit 10 Time: 9
2023/11/29 23:37:49.223 INFO [ControllerResponseFilter] [grizzly-http-server-12] Handled request from 172.31.172.141 POST <http://shldvatlb109.tvlport.net:9000/sql>, content-type application/json; charset=UTF-8 status code 200 OK
2023/11/29 23:37:50.324 INFO [PinotQueryResource] [grizzly-http-server-17] url string passed is : <http://172.19.0.4:8099/query/sql>
2023/11/29 23:37:50.331 INFO [PinotQueryResource] [grizzly-http-server-17] Query: select * from uapitest limit 10 Time: 7
2023/11/29 23:37:50.331 INFO [ControllerResponseFilter] [grizzly-http-server-17] Handled request from 172.31.172.141 POST <http://shldvatlb109.tvlport.net:9000/sql>, content-type application/json; charset=UTF-8 status code 200 OK
2023/11/29 23:37:51.491 INFO [ControllerResponseFilter] [grizzly-http-server-20] Handled request from 172.31.172.141 GET <http://shldvatlb109.tvlport.net:9000/tables/uapi1/schema>, content-type null status code 200 OK
2023/11/29 23:37:51.568 INFO [PinotQueryResource] [grizzly-http-server-9] url string passed is : <http://172.19.0.4:8099/query/sql>
2023/11/29 23:37:51.572 INFO [PinotQueryResource] [grizzly-http-server-9] Query: select * from uapi1 limit 10 Time: 4
2023/11/29 23:37:51.572 INFO [ControllerResponseFilter] [grizzly-http-server-9] Handled request from 172.31.172.141 POST <http://shldvatlb109.tvlport.net:9000/sql>, content-type application/json; charset=UTF-8 status code 200 OK
2023/11/29 23:37:53.176 INFO [ControllerResponseFilter] [grizzly-http-server-13] Handled request from 172.31.172.141 GET <http://shldvatlb109.tvlport.net:9000/tables/uapi/schema>, content-type null status code 200 OK
2023/11/29 23:37:53.289 INFO [PinotQueryResource] [grizzly-http-server-5] url string passed is : <http://172.19.0.4:8099/query/sql>
2023/11/29 23:37:53.293 INFO [PinotQueryResource] [grizzly-http-server-5] Query: select * from uapi limit 10 Time: 4
2023/11/29 23:37:53.293 INFO [ControllerResponseFilter] [grizzly-http-server-5] Handled request from 172.31.172.141 POST <http://shldvatlb109.tvlport.net:9000/sql>, content-type application/json; charset=UTF-8 status code 200 OK
2023/11/29 23:38:23.151 INFO [LeadControllerUtils] [ControllerLeadershipFetchingThread] Getting Helix leader: 172.19.0.3_9000, Helix version: 1.0.4, mtime: 1699641101367
2023/11/29 23:39:23.154 INFO [LeadControllerUtils] [ControllerLeadershipFetchingThread] Getting Helix leader: 172.19.0.3_9000, Helix version: 1.0.4, mtime: 1699641101367
2023/11/29 23:40:22.628 INFO [PeriodicTaskScheduler] [pool-11-thread-6] Starting SegmentStatusChecker with running frequency of 300 seconds.
2023/11/29 23:40:22.628 INFO [BasePeriodicTask] [pool-11-thread-6] [TaskRequestId: auto] Start running task: SegmentStatusChecker
2023/11/29 23:40:22.629 INFO [ControllerPeriodicTask] [pool-11-thread-6] Processing 3 tables in task: SegmentStatusChecker
2023/11/29 23:40:22.634 INFO [ServerTableSizeReader] [pool-11-thread-6] Reading segment sizes from 0 servers for table: uapi_OFFLINE with timeout: 30000ms
2023/11/29 23:40:22.635 INFO [CompletionServiceHelper] [pool-11-thread-6] Finished reading information for table: uapi_OFFLINE
2023/11/29 23:40:22.639 INFO [ServerTableSizeReader] [pool-11-thread-6] Reading segment sizes from 0 servers for table: uapitest_OFFLINE with timeout: 30000ms
2023/11/29 23:40:22.639 INFO [CompletionServiceHelper] [pool-11-thread-6] Finished reading information for table: uapitest_OFFLINE
2023/11/29 23:40:22.644 INFO [ServerTableSizeReader] [pool-11-thread-6] Reading segment sizes from 0 servers for table: uapi1_OFFLINE with timeout: 30000ms
2023/11/29 23:40:22.644 INFO [CompletionServiceHelper] [pool-11-thread-6] Finished reading information for table: uapi1_OFFLINE
2023/11/29 23:40:22.644 INFO [ControllerPeriodicTask] [pool-11-thread-6] Finish processing 3/3 tables in task: SegmentStatusChecker
2023/11/29 23:40:22.644 INFO [BasePeriodicTask] [pool-11-thread-6] [TaskRequestId: auto] Finish running task: SegmentStatusChecker in 16ms
2023/11/29 23:40:23.156 INFO [LeadControllerUtils] [ControllerLeadershipFetchingThread] Getting Helix leader: 172.19.0.3_9000, Helix version: 1.0.4, mtime: 1699641101367
2023/11/29 23:41:23.157 INFO [LeadControllerUtils] [ControllerLeadershipFetchingThread] Getting Helix leader: 172.19.0.3_9000, Helix version: 1.0.4, mtime: 1699641101367
2023/11/29 23:41:24.503 INFO [ControllerResponseFilter] [grizzly-http-server-19] Handled request from 172.19.0.1 GET <http://shldvatlb109.tvlport.net:9000/tables/uapitest_OFFLINE/schema>, content-type null status code 200 OK
2023/11/29 23:41:24.579 INFO [ControllerResponseFilter] [grizzly-http-server-15] Handled request from 172.19.0.1 GET <http://shldvatlb109.tvlport.net:9000/tables/uapitest_OFFLINE>, content-type null status code 200 OK
2023/11/29 23:41:32.931 INFO [PeriodicTaskScheduler] [pool-11-thread-7] Starting TaskMetricsEmitter with running frequency of 300 seconds.
2023/11/29 23:41:32.931 INFO [BasePeriodicTask] [pool-11-thread-7] [TaskRequestId: auto] Start running task: TaskMetricsEmitter
2023/11/29 23:41:32.934 INFO [BasePeriodicTask] [pool-11-thread-7] [TaskRequestId: auto] Finish running task: TaskMetricsEmitter in 3ms
2023/11/29 23:42:23.158 INFO [LeadControllerUtils] [ControllerLeadershipFetchingThread] Getting Helix leader: 172.19.0.3_9000, Helix version: 1.0.4, mtime: 1699641101367
2023/11/29 23:42:59.685 INFO [ControllerResponseFilter] [grizzly-http-server-22] Handled request from 172.31.172.141 GET <http://shldvatlb109.tvlport.net:9000/tables/uapitest/schema>, content-type null status code 200 OK
2023/11/29 23:42:59.773 INFO [PinotQueryResource] [grizzly-http-server-18] url string passed is : <http://172.19.0.4:8099/query/sql>
2023/11/29 23:42:59.779 INFO [PinotQueryResource] [grizzly-http-server-18] Query: select * from uapitest limit 10 Time: 6
2023/11/29 23:42:59.779 INFO [ControllerResponseFilter] [grizzly-http-server-18] Handled request from 172.31.172.141 POST <http://shldvatlb109.tvlport.net:9000/sql>, content-type application/json; charset=UTF-8 status code 200 OK
2023/11/29 23:43:08.169 INFO [ControllerResponseFilter] [grizzly-http-server-16] Handled request from 172.31.172.141 GET <http://shldvatlb109.tvlport.net:9000/tables/uapitest/schema>, content-type null status code 200 OK
2023/11/29 23:43:08.234 INFO [PinotQueryResource] [grizzly-http-server-10] url string passed is : <http://172.19.0.4:8099/query/sql>
2023/11/29 23:43:08.240 INFO [PinotQueryResource] [grizzly-http-server-10] Query: select * from uapitest limit 10 Time: 6
2023/11/29 23:43:08.240 INFO [ControllerResponseFilter] [grizzly-http-server-10] Handled request from 172.31.172.141 POST <http://shldvatlb109.tvlport.net:9000/sql>, content-type application/json; charset=UTF-8 status code 200 OK
2023/11/29 23:43:09.659 INFO [ControllerResponseFilter] [grizzly-http-server-21] Handled request from 172.31.172.141 GET <http://shldvatlb109.tvlport.net:9000/tables/uapi1/schema>, content-type null status code 200 OK
2023/11/29 23:43:09.760 INFO [PinotQueryResource] [grizzly-http-server-24] url string passed is : <http://172.19.0.4:8099/query/sql>
2023/11/29 23:43:09.767 INFO [PinotQueryResource] [grizzly-http-server-24] Query: select * from uapi1 limit 10 Time: 8
2023/11/29 23:43:09.767 INFO [Control
x
hmm, seems to be some data issue:
Copy code
Caused by: java.lang.NumberFormatException: empty String
	at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
	at java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
	at java.base/java.lang.Double.parseDouble(Double.java:543)
	at org.apache.pinot.common.utils.PinotDataType$11.toDouble(PinotDataType.java:622)
	at org.apache.pinot.common.utils.PinotDataType$8.convert(PinotDataType.java:478)
	at org.apache.pinot.common.utils.PinotDataType$8.convert(PinotDataType.java:426)
	at org.apache.pinot.segment.local.recordtransformer.DataTypeTransformer.transform(DataTypeTransformer.java:106)
	... 15 more
Copy code
Caused by: java.lang.RuntimeException: Failed to generate Pinot segment for file - <s3://tvlp-ds-pinot-dev/uapi-pinot/log_date=2023-02-27/log_hour=01/000053_0>
s
let me try for other hour
x
sure, please check your data and schema
s
ok
i don't understand why it is complain about surcharge field it was working earlier .
x
?
Copy code
empty String
s
on which filed ?
x
check which column is on double column?
s
so i have a field called surcharge and this is coming as a empty string, how we can by pass this while we are transforming from parquet to pinot segments?
i figured this out, updated to string and it worked.
and i can see now segments are getting converted, but pinot table i couldn't see any data yet.
x
what’s the exception you saw for segment push job
you can run a job:
Copy code
executionFrameworkSpec:
  name: 'standalone'
  segmentGenerationJobRunnerClassName: 'org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner'
  segmentTarPushJobRunnerClassName: 'org.apache.pinot.plugin.ingestion.batch.standalone.SegmentTarPushJobRunner'
  segmentMetadataPushJobRunnerClassName: 'org.apache.pinot.plugin.ingestion.batch.standalone.SegmentMetadataPushJobRunner'
  #  name: 'standalone'
  #  segmentGenerationJobRunnerClassName: 'org.apache.pinot.plugin.inputformat.thrift.ThriftSegmentGenerationJobRunner'
  #  segmentTarPushJobRunnerClassName: 'org.apache.pinot.plugin.inputformat.thrift.ThriftPushJobRunner'
jobType: SegmentTarPush
inputDirURI: '<s3://tvlp-ds-pinot-dev/uapi-pinot/log_date=2023-02-27/log_hour=01/>'
includeFileNamePattern: 'glob:**/*'
outputDirURI: '<s3://tvlp-ds-pinot-dev/pinot_segments/>'
overwriteOutput: true
pinotFSSpecs:
  - scheme: s3
    className: org.apache.pinot.plugin.filesystem.S3PinotFS
    configs:
      region: us-east-1
recordReaderSpec:
  dataFormat: 'parquet'
  className: 'org.apache.pinot.plugin.inputformat.parquet.ParquetRecordReader'
  configClassName: 'org.apache.pinot.plugin.inputformat.parquet.ParquetRecordReaderConfig'
    #recordTransformerSpec:
    #  transformerClassName: 'org.apache.pinot.plugin.inputformat.thrift.ThriftRecordTransformer'
    #  dataSchema:
    #    dataSource: 'uapi'
    #    granularitySpec:
    #      dataType: 'LONG'
    #      segmentGranularity: 'HOUR'
    #      queryGranularity: 'NONE'
pinotClusterSpecs:
  - controllerURI: '<http://shldvatlb109.tvlport.net:9000>'
tableSpec:
  tableName: 'uapitest_OFFLINE'
    #s3Config:
    #  awsAccessKey: 'xxxx'
    #  awsSecretKey: 'xxxxx'
    #proxyConfig:
    #  httpProxy: 'xxxxx:8080'
    #  httpsProxy: 'xxxxx:8080'
    #  ftpProxy: 'xxxxx:8080'
pushJobSpec:
  pushAttempts: 2
  pushRetryIntervalMillis: 1000
You can change
Copy code
jobType: SegmentTarPush
s
this converting from parquet to pinto segments looks good now
Copy code
bash-4.2# cd /opt/pinot/bin && /opt/pinot/bin/pinot-admin.sh LaunchDataIngestionJob -jobSpecFile /opt/pinot/configs/batch_ingestion_job_spec.yaml
[0.001s][warning][gc] -Xloggc is deprecated. Will use -Xlog:gc:gc-pinot-server.log instead.
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/pinot/lib/pinot-all-1.0.0-jar-with-dependencies.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-metrics/pinot-dropwizard/pinot-dropwizard-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-metrics/pinot-yammer/pinot-yammer-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-orc/pinot-orc-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-parquet/pinot-parquet-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-clp-log/pinot-clp-log-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-file-system/pinot-s3/pinot-s3-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-stream-ingestion/pinot-pulsar/pinot-pulsar-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-environment/pinot-azure/pinot-azure-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See <http://www.slf4j.org/codes.html#multiple_bindings> for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (file:/opt/pinot/lib/pinot-all-1.0.0-jar-with-dependencies.jar) to method java.lang.Object.finalize()
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
x
so the job will only push segments and pinot cluster
s
but pinot table still not able to read the converted pinot segments
x
can you run the job with
jobType: SegmentTarPush
s
ok
x
and check job config
s
is this look Ok?
Copy code
executionFrameworkSpec:
  name: 'standalone'
  segmentGenerationJobRunnerClassName: 'org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner'
  segmentTarPushJobRunnerClassName: 'org.apache.pinot.plugin.ingestion.batch.standalone.SegmentTarPushJobRunner'
  #  name: 'standalone'
  #  segmentGenerationJobRunnerClassName: 'org.apache.pinot.plugin.inputformat.thrift.ThriftSegmentGenerationJobRunner'
  #  segmentTarPushJobRunnerClassName: 'org.apache.pinot.plugin.inputformat.thrift.ThriftPushJobRunner'
  #jobType: SegmentCreationAndTarPush
jobType: SegmentTarPush
inputDirURI: '<s3://tvlp-ds-pinot-dev/uapi-pinot/log_date=2023-02-27/log_hour=01/>'
includeFileNamePattern: 'glob:**/*'
outputDirURI: '<s3://tvlp-ds-pinot-dev/pinot_segments/>'
overwriteOutput: true
pinotFSSpecs:
  - scheme: s3
    className: org.apache.pinot.plugin.filesystem.S3PinotFS
    configs:
      region: us-east-1
recordReaderSpec:
  dataFormat: 'parquet'
  className: 'org.apache.pinot.plugin.inputformat.parquet.ParquetRecordReader'
  configClassName: 'org.apache.pinot.plugin.inputformat.parquet.ParquetRecordReaderConfig'
    #recordTransformerSpec:
    #  transformerClassName: 'org.apache.pinot.plugin.inputformat.thrift.ThriftRecordTransformer'
    #  dataSchema:
    #    dataSource: 'uapi'
    #    granularitySpec:
    #      dataType: 'LONG'
    #      segmentGranularity: 'HOUR'
    #      queryGranularity: 'NONE'
pinotClusterSpecs:
  - controllerURI: '<http://shldvatlb109.tvlport.net:9000>'
tableSpec:
  tableName: 'test_OFFLINE'
    #s3Config:
    #  awsAccessKey: 'xxxxx'
    #  awsSecretKey: '/xxxx'
    #proxyConfig:
    #  httpProxy: '<http://xxxxx8080>'
    #  httpsProxy: '<http://xxxxx:8080>'
    #  ftpProxy: '<http://xxxxx:8080>'
pushJobSpec:
  pushParallelism: 2
  pushAttempts: 2
  pushRetryIntervalMillis: 1000
    #segmentUriPrefix : 'file://'
    #segmentUriSuffix : my-dir/
    #pushFileNamePattern : glob:\*\*2023-10\*
x
yes, just change that one line
s
ok
started again job now
job stopped very quick
Copy code
bash-4.2# cd /opt/pinot/bin && /opt/pinot/bin/pinot-admin.sh LaunchDataIngestionJob -jobSpecFile /opt/pinot/configs/batch_ingestion_job_spec.yaml
[0.001s][warning][gc] -Xloggc is deprecated. Will use -Xlog:gc:gc-pinot-server.log instead.
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/pinot/lib/pinot-all-1.0.0-jar-with-dependencies.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-metrics/pinot-dropwizard/pinot-dropwizard-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-metrics/pinot-yammer/pinot-yammer-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-orc/pinot-orc-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-parquet/pinot-parquet-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-clp-log/pinot-clp-log-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-file-system/pinot-s3/pinot-s3-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-stream-ingestion/pinot-pulsar/pinot-pulsar-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-environment/pinot-azure/pinot-azure-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See <http://www.slf4j.org/codes.html#multiple_bindings> for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (file:/opt/pinot/lib/pinot-all-1.0.0-jar-with-dependencies.jar) to method java.lang.Object.finalize()
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
x
hmm, can you check if there is any log from controller
s
nope nothing found
x
can you change log4j2.xml file to make it show info log?
then tail pinot controller when you run this job, and see what’s going on there
one thing you can check is to open one segment tar file and check metadata.properties file and check segment start/end time. I think pinot controller may reject segment with invalid timestamp
s
you mean what ever it generated with SegmentCreationAndTarPush?
x
yes
s
ok
x
SegmentCreationAndTarPush
is two job,
SegmentCreation
and
SegmentTarPush
🆗 1
s
let me generate again
x
you don’t need to re-generate segment
s
i deleted the previous one from s3
x
ok
check how many segments in
Copy code
<s3://tvlp-ds-pinot-dev/pinot_segments/>
s
i deleted all the data on this same folder, and just i started generating it again, will let you know once it is completed.
here is info segment.start.time = 1677459600000 column.travel_*start*date.cardinality = 359 column.travel_*start*date.totalDocs = 1639185 column.travel_*start*date.dataType = STRING column.travel_*start*date.bitsPerElement = 9 column.travel_*start*date.lengthOfEachEntry = 5 column.travel_*start*date.columnType = DIMENSION column.travel_*start*date.isSorted = false column.travel_*start*date.hasDictionary = true column.travel_*start*date.isSingleValues = true column.travel_*start*date.maxNumberOfMultiValues = 0 column.travel_*start*date.totalNumberOfEntries = 1639185 column.travel_*start*date.isAutoGenerated = false column.travel_*start*date.minValue = 19388 column.travel_*start*date.maxValue = null column.travel_*start*date.defaultNullValue = null root@*vhlpnpbas052* 20231201,212326 ~/test_OFFLINE_2023-02-27-01_2023-02-27-01_0/v3 # cat metadata.properties | grep end.time segment.end.time = 1677463122684 #
segment.start.time = 1677459600000 segment.end.time = 1677463122684
x
this one looks good
then please enable logs on batch job and controller, let’s see what’s the segment tar push job
s
you want me to update to jobType: SegmentTarPush and enabled debug?
x
yes
s
ok
x
we should see some logs like:
Copy code
<http://LOGGER.info|LOGGER.info>("Start pushing segments: {}... to locations: {} for table {}",
        Arrays.toString(tarFilePaths.subList(0, Math.min(5, tarFilePaths.size())).toArray()),
        Arrays.toString(spec.getPinotClusterSpecs()), tableName);
s
Copy code
15.238 INFO [TaskPersistDataStage] [HelixController-pipeline-task-PinotCluster-(f85aa49f_TASK)] START TaskPersistDataStage.process()
2023/12/01 21:22:15.239 INFO [TaskPersistDataStage] [HelixController-pipeline-task-PinotCluster-(f85aa49f_TASK)] END TaskPersistDataStage.process() for cluster PinotCluster took 1 ms
2023/12/01 21:22:15.239 INFO [Pipeline] [HelixController-pipeline-task-PinotCluster-(f85aa49f_TASK)] END TaskPersistDataStage for TASK pipeline for cluster PinotCluster. took: 1 ms for event f85aa49f_TASK
2023/12/01 21:22:15.239 INFO [AbstractAsyncBaseStage] [HelixController-pipeline-task-PinotCluster-(f85aa49f_TASK)] Submitted asynchronous TASK::TaskGarbageCollectionStage task to worker
2023/12/01 21:22:15.239 INFO [Pipeline] [HelixController-pipeline-task-PinotCluster-(f85aa49f_TASK)] END TaskGarbageCollectionStage for TASK pipeline for cluster PinotCluster. took: 0 ms for event f85aa49f_TASK
2023/12/01 21:22:15.239 INFO [Pipeline] [HelixController-pipeline-task-PinotCluster-(f85aa49f_TASK)] END MessageGenerationPhase for TASK pipeline for cluster PinotCluster. took: 0 ms for event f85aa49f_TASK
2023/12/01 21:22:15.239 INFO [Pipeline] [HelixController-pipeline-task-PinotCluster-(f85aa49f_TASK)] END TaskMessageDispatchStage for TASK pipeline for cluster PinotCluster. took: 0 ms for event f85aa49f_TASK
2023/12/01 21:22:15.239 INFO [GenericHelixController] [HelixController-pipeline-task-PinotCluster-(f85aa49f_TASK)] END: Invoking TASK controller pipeline for event MessageChange::f85aa49f_TASK for cluster PinotCluster, took 34 ms
2023/12/01 21:22:15.239 INFO [AbstractAsyncBaseStage] [TaskJobPurgeWorker-PinotCluster] START AsyncProcess: TASK::TaskGarbageCollectionStage
2023/12/01 21:22:15.239 INFO [AbstractAsyncBaseStage] [TaskJobPurgeWorker-PinotCluster] END AsyncProcess: TASK::TaskGarbageCollectionStage, took 0 ms
2023/12/01 21:22:27.247 INFO [LeadControllerUtils] [ControllerLeadershipFetchingThread] Getting Helix leader: 172.19.0.3_9000, Helix version: 1.0.4, mtime: 1699641101367
2023/12/01 21:23:27.248 INFO [LeadControllerUtils] [ControllerLeadershipFetchingThread] Getting Helix leader: 172.19.0.3_9000, Helix version: 1.0.4, mtime: 1699641101367
2023/12/01 21:24:27.249 INFO [LeadControllerUtils] [ControllerLeadershipFetchingThread] Getting Helix leader: 172.19.0.3_9000, Helix version: 1.0.4, mtime: 1699641101367
2023/12/01 21:25:27.250 INFO [LeadControllerUtils] [ControllerLeadershipFetchingThread] Getting Helix leader: 172.19.0.3_9000, Helix version: 1.0.4, mtime: 1699641101367
2023/12/01 21:25:33.100 INFO [PeriodicTaskScheduler] [pool-11-thread-1] Starting SegmentStatusChecker with running frequency of 300 seconds.
2023/12/01 21:25:33.101 INFO [BasePeriodicTask] [pool-11-thread-1] [TaskRequestId: auto] Start running task: SegmentStatusChecker
2023/12/01 21:25:33.102 INFO [ControllerPeriodicTask] [pool-11-thread-1] Processing 4 tables in task: SegmentStatusChecker
2023/12/01 21:25:33.134 INFO [ServerTableSizeReader] [pool-11-thread-1] Reading segment sizes from 1 servers for table: test_OFFLINE with timeout: 30000ms
2023/12/01 21:25:33.152 INFO [CompletionServiceHelper] [pool-11-thread-1] Finished reading information for table: test_OFFLINE
2023/12/01 21:25:33.157 INFO [ServerTableSizeReader] [pool-11-thread-1] Reading segment sizes from 0 servers for table: uapi_OFFLINE with timeout: 30000ms
2023/12/01 21:25:33.157 INFO [CompletionServiceHelper] [pool-11-thread-1] Finished reading information for table: uapi_OFFLINE
2023/12/01 21:25:33.162 INFO [ServerTableSizeReader] [pool-11-thread-1] Reading segment sizes from 0 servers for table: uapitest_OFFLINE with timeout: 30000ms
2023/12/01 21:25:33.162 INFO [CompletionServiceHelper] [pool-11-thread-1] Finished reading information for table: uapitest_OFFLINE
2023/12/01 21:25:33.166 INFO [ServerTableSizeReader] [pool-11-thread-1] Reading segment sizes from 0 servers for table: uapi1_OFFLINE with timeout: 30000ms
2023/12/01 21:25:33.166 INFO [CompletionServiceHelper] [pool-11-thread-1] Finished reading information for table: uapi1_OFFLINE
2023/12/01 21:25:33.166 INFO [ControllerPeriodicTask] [pool-11-thread-1] Finish processing 4/4 tables in task: SegmentStatusChecker
2023/12/01 21:25:33.166 INFO [BasePeriodicTask] [pool-11-thread-1] [TaskRequestId: auto] Finish running task: SegmentStatusChecker in 65ms
2023/12/01 21:26:27.251 INFO [LeadControllerUtils] [ControllerLeadershipFetchingThread] Getting Helix leader: 172.19.0.3_9000, Helix version: 1.0.4, mtime: 1699641101367
2023/12/01 21:26:35.393 INFO [PeriodicTaskScheduler] [pool-11-thread-8] Starting TaskMetricsEmitter with running frequency of 300 seconds.
2023/12/01 21:26:35.393 INFO [BasePeriodicTask] [pool-11-thread-8] [TaskRequestId: auto] Start running task: TaskMetricsEmitter
2023/12/01 21:26:35.397 INFO [BasePeriodicTask] [pool-11-thread-8] [TaskRequestId: auto] Finish running task: TaskMetricsEmitter in 4ms
2023/12/01 21:27:27.252 INFO [LeadControllerUtils] [ControllerLeadershipFetchingThread] Getting Helix leader: 172.19.0.3_9000, Helix version: 1.0.4, mtime: 1699641101367
2023/12/01 21:28:27.254 INFO [LeadControllerUtils] [ControllerLeadershipFetchingThread] Getting Helix leader: 172.19.0.3_9000, Helix version: 1.0.4, mtime: 1699641101367
2023/12/01 21:29:27.255 INFO [LeadControllerUtils] [ControllerLeadershipFetchingThread] Getting Helix leader: 172.19.0.3_9000, Helix version: 1.0.4, mtime: 1699641101367
2023/12/01 21:30:27.257 INFO [LeadControllerUtils] [ControllerLeadershipFetchingThread] Getting Helix leader: 172.19.0.3_9000, Helix version: 1.0.4, mtime: 1699641101367
2023/12/01 21:30:33.166 INFO [PeriodicTaskScheduler] [pool-11-thread-4] Starting SegmentStatusChecker with running frequency of 300 seconds.
2023/12/01 21:30:33.166 INFO [BasePeriodicTask] [pool-11-thread-4] [TaskRequestId: auto] Start running task: SegmentStatusChecker
/fileUploadTemp/tmp-80e224aa-c2bf-
x
hmm, whats the log from ingestion job
s
Copy code
2023/12/01 21:31:40.030 INFO [PinotSegmentUploadDownloadRestletResource] [jersey-server-managed-async-executor-23] Using segment download URI: <http://172.19.0.3:9000/segments/test/test_OFFLINE_2023-02-27-01_2023-02-27-01_9> for segment: /tmp/data/PinotController/172.19.0.3_9000/fileUploadTemp/tmp-cfa7c58c-2285-484a-91db-e7a0d93ddac1 of table: test_OFFLINE (move segment: true)
2023/12/01 21:31:40.031 INFO [ZKOperator] [jersey-server-managed-async-executor-23] Segment: test_OFFLINE_2023-02-27-01_2023-02-27-01_9 already exists in table: test_OFFLINE, refreshing it
2023/12/01 21:31:40.031 INFO [ZKOperator] [jersey-server-managed-async-executor-23] New segment crc '3941239919' is the same as existing segment crc for segment 'test_OFFLINE_2023-02-27-01_2023-02-27-01_9'. Updating ZK metadata without refreshing the segment.
2023/12/01 21:31:40.075 INFO [ControllerResponseFilter] [jersey-server-managed-async-executor-23] Handled request from 172.19.0.1 POST <http://shldvatlb109.tvlport.net:9000/v2/segments?tableName=test_OFFLINE&tableName=test_OFFLINE&tableType=OFFLINE>, content-type multipart/form-data; boundary=OmVH7ov3Ogg2s1FEw8AMYjA0E7Ai4cjcvtitW1N status code 200 OK
2023/12/01 21:31:41.502 INFO [ZKPathDataDumpTask] [StatusDumpTimerTask] Scan statusUpdates and errors for cluster: PinotCluster, by controller: org.apache.helix.manager.zk.ZKHelixManager@496cedbb
2023/12/01 21:31:42.531 INFO [MetadataExtractorFactory] [jersey-server-managed-async-executor-23] Instantiating MetadataExtractor class org.apache.pinot.core.metadata.DefaultMetadataExtractor
2023/12/01 21:31:43.419 INFO [PinotSegmentUploadDownloadRestletResource] [jersey-server-managed-async-executor-23] Processing upload request for segment: test_OFFLINE_2023-02-27-01_2023-02-27-01_7 of table: test_OFFLINE with upload type: SEGMENT from client: gateway, ingestion descriptor: null
2023/12/01 21:31:43.420 INFO [StorageQuotaChecker] [jersey-server-managed-async-executor-23] Storage quota is not configured for table: test_OFFLINE, skipping the check
2023/12/01 21:31:43.420 INFO [PinotSegmentUploadDownloadRestletResource] [jersey-server-managed-async-executor-23] Using segment download URI: <http://172.19.0.3:9000/segments/test/test_OFFLINE_2023-02-27-01_2023-02-27-01_7> for segment: /tmp/data/PinotController/172.19.0.3_9000/fileUploadTemp/tmp-4cc222a1-57b7-41fd-9ee3-35f27636f3e0 of table: test_OFFLINE (move segment: true)
2023/12/01 21:31:43.422 INFO [ZKOperator] [jersey-server-managed-async-executor-23] Segment: test_OFFLINE_2023-02-27-01_2023-02-27-01_7 already exists in table: test_OFFLINE, refreshing it
2023/12/01 21:31:43.422 INFO [ZKOperator] [jersey-server-managed-async-executor-23] New segment crc '987579070' is the same as existing segment crc for segment 'test_OFFLINE_2023-02-27-01_2023-02-27-01_7'. Updating ZK metadata without refreshing the segment.
2023/12/01 21:31:43.468 INFO [ControllerResponseFilter] [jersey-server-managed-async-executor-23] Handled request from 172.19.0.1 POST <http://shldvatlb109.tvlport.net:9000/v2/segments?tableName=test_OFFLINE&tableName=test_OFFLINE&tableType=OFFLINE>, content-type multipart/form-data; boundary=426gw3SY1LLDhg5LJQX8Sj1gTl71brxBMY status code 200 OK
2023/12/01 21:31:45.131 INFO [MetadataExtractorFactory] [jersey-server-managed-async-executor-23] Instantiating MetadataExtractor class org.apache.pinot.core.metadata.DefaultMetadataExtractor
2023/12/01 21:31:46.064 INFO [PinotSegmentUploadDownloadRestletResource] [jersey-server-managed-async-executor-23] Processing upload request for segment: test_OFFLINE_2023-02-27-01_2023-02-27-01_6 of table: test_OFFLINE with upload type: SEGMENT from client: gateway, ingestion descriptor: null
2023/12/01 21:31:46.066 INFO [StorageQuotaChecker] [jersey-server-managed-async-execut^
Copy code
[root@shldvatlb109 ~]# docker exec -it pinot-server /bin/bash
bash-4.2# vi /opt/pinot/configs/batch_ingestion_job_spec.yaml
bash-4.2# cd /opt/pinot/bin && /opt/pinot/bin/pinot-admin.sh LaunchDataIngestionJob -jobSpecFile /opt/pinot/configs/batch_ingestion_job_spec.yaml
[0.001s][warning][gc] -Xloggc is deprecated. Will use -Xlog:gc:gc-pinot-server.log instead.
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/pinot/lib/pinot-all-1.0.0-jar-with-dependencies.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-metrics/pinot-dropwizard/pinot-dropwizard-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-metrics/pinot-yammer/pinot-yammer-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-orc/pinot-orc-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-parquet/pinot-parquet-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-input-format/pinot-clp-log/pinot-clp-log-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-file-system/pinot-s3/pinot-s3-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-stream-ingestion/pinot-pulsar/pinot-pulsar-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/pinot/plugins/pinot-environment/pinot-azure/pinot-azure-1.0.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See <http://www.slf4j.org/codes.html#multiple_bindings> for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (file:/opt/pinot/lib/pinot-all-1.0.0-jar-with-dependencies.jar) to method java.lang.Object.finalize()
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
bash-4.2#
x
hmm
Copy code
2023/12/01 21:31:43.422 INFO [ZKOperator] [jersey-server-managed-async-executor-23] New segment crc '987579070' is the same as existing segment crc for segment 'test_OFFLINE_2023-02-27-01_2023-02-27-01_7'. Updating ZK metadata without refreshing the segment.
this means the segments are already pushed
can you check controller ui
go to table status
and check segment status
where do you deploy pinot servers
s
yup i can see now, that's cool
x
oh, ok
then it’s good
s
so all files looks same which file it generated with
jobType: SegmentTarPush
?
Copy code
test_OFFLINE_2023-02-27-01_2023-02-27-01_14.tar.gz	gz	December 1, 2023, 13:56:14 (UTC-07:00)	
32.0 MB
Standard
test_OFFLINE_2023-02-27-01_2023-02-27-01_15.tar.gz	gz	December 1, 2023, 13:58:29 (UTC-07:00)	
32.0 MB
Standard
test_OFFLINE_2023-02-27-01_2023-02-27-01_16.tar.gz	gz	December 1, 2023, 14:00:37 (UTC-07:00)	
30.1 MB
Standard
test_OFFLINE_2023-02-27-01_2023-02-27-01_17.tar.gz	gz	December 1, 2023, 14:02:44 (UTC-07:00)	
29.3 MB
Standard
test_OFFLINE_2023-02-27-01_2023-02-27-01_18.tar.gz	gz	December 1, 2023, 14:04:36 (UTC-07:00)	
25.9 MB
Standard
test_OFFLINE_2023-02-27-01_2023-02-27-01_19.tar.gz	gz	December 1, 2023, 14:06:24 (UTC-07:00)	
24.6 MB
Standard
test_OFFLINE_2023-02-27-01_2023-02-27-01_20.tar.gz	gz	December 1, 2023, 14:08:10 (UTC-07:00)	
24.1 MB
Standard
test_OFFLINE_2023-02-27-01_2023-02-27-01_21.tar.gz	gz	December 1, 2023, 14:09:51 (UTC-07:00)	
22.9 MB
Standard
test_OFFLINE_2023-02-27-01_2023-02-27-01_22.tar.gz	gz	December 1, 2023, 14:11:27 (UTC-07:00)	
21.8 MB
Standard
test_OFFLINE_2023-02-27-01_2023-02-27-01_23.tar.gz	gz	December 1, 2023, 14:13:00 (UTC-07:00)	
20.9 MB
Standard
test_OFFLINE_2023-02-27-01_2023-02-27-01_24.tar.gz	gz	December 1, 2023, 14:14:19 (UTC-07:00)	
17.8 MB
Standard
test_OFFLINE_2023-02-27-01_2023-02-27-01_25.tar.gz	gz	December 1, 2023, 14:15:37 (UTC-07:00)	
17.8 MB
Standard
test_OFFLINE_2023-02-27-01_2023-02-27-01_26.tar.gz	gz	December 1, 2023, 14:16:51 (UTC-07:00)	
16.1 MB
Standard
test_OFFLINE_2023-02-27-01_2023-02-27-01_27.tar.gz	gz	December 1, 2023, 14:17:56 (UTC-07:00)	
14.3 MB
Standard
test_OFFLINE_2023-02-27-01_2023-02-27-01_28.tar.gz	gz	December 1, 2023, 14:18:54 (UTC-07:00)	
12.3 MB
Standard
test_OFFLINE_2023-02-27-01_2023-02-27-01_29.tar.gz	gz	December 1, 2023, 14:19:47 (UTC-07:00)	
11.2 MB
Standard
test_OFFLINE_2023-02-27-01_2023-02-27-01_30.tar.gz	gz	December 1, 2023, 14:20:29 (UTC-07:00)	
8.2 MB
Standard
test_OFFLINE_2023-02-27-01_2023-02-27-01_31.tar.gz	gz	December 1, 2023, 14:21:07 (UTC-07:00)	
7.3 MB
Standard
test_OFFLINE_2023-02-27-01_2023-02-27-01_32.tar.gz	gz	December 1, 2023, 14:21:20 (UTC-07:00)	
1.1 MB
Standard
by the with way`jobType: SegmentTarPush` job get completed very quick
so are we ok just running with
jobType: SegmentTarPush
? or it does first run
SegmentCreationAndTarPush
and then run
jobType: SegmentTarPush
x
SegmentTarPush
pushes segments from s3 to pinot, it won’t generate
you only need
SegmentCreationAndTarPush
this includes tarPush already
jobType: SegmentTarPush
is just for quick test
s
but when we tried using
SegmentCreationAndTarPush
at first why it never get pushed?
x
I don’t know why
s
let me try again and see
x
I suggest you delete the table and rerun
SegmentCreationAndTarPush
s
sure
x
so it will be a new env/table
s
so i deleted the s3 pinot segments
x
delete pinot table
after 10 seconds, recreate it
s
and i can still see the pinot is giving same count, so the data again store in pinot cluster but not read from s3?
x
no
pinot download segments to local
s
i see
it does not keep s3 as main storage ?
x
s3 for backup
s
got it
image.png
s
got it
so how to make this performance better? converting from parqute to pinot segments?
may running with spark will helps here?
x
yes
you can increase the parallelism by using more spark workers
s
ok
x
the lowest granular is a parquet file
s
Ok