harbby / presto-connectors

facebook presto connectors
Apache License 2.0
49 stars 22 forks source link

Duplicate key ElasticsearchColumnHandle error #2

Closed tooptoop4 closed 6 years ago

tooptoop4 commented 6 years ago

Using Elasticsearch5 connector

DDL is default | audit | row(createdBy varchar, lastModifiedBy varchar) default | dataexternal | boolean default | fields | row(name varchar, partition_key boolean, pos bigint, source_type varchar, type varchar) default | metadata | row(EXTERNAL varchar, transient_lastDdlTime varchar) default | name | row(catalogName varchar, databaseName varchar, partitionName varchar, qualifiedName varchar, tableName varchar, viewName default | partitionkeys | varchar default | refreshmarker | varchar default | searchabledefinitionmetadata | row(data_hygiene row(delete_column varchar, deletemethod varchar), job row(name varchar), lifetime row(partitionedBy var default | serde | row(inputFormat varchar, outputFormat varchar, owner varchar, serdeInfoParameters row(serialization row(format varchar)), default | timestamp | date default | type | varchar default | user | varchar

presto> select dataexternal from elasticsearch.default.metacat; java.lang.RuntimeException: Error fetching next at http://localhost:4038/v1/statement/20180916_234729_00008_skjd4/1 returned an invalid response: JsonResponse{statusCode=500, statusMessage=Internal Server Error, headers={content-length=[3623], content-type=[text/plain], date=[Sun, 16 Sep 2018 23:47:29 GMT]}, hasValue=false} [Error: java.lang.IllegalStateException: Duplicate key ElasticsearchColumnHandle{name=_type, type=varchar, keyword=false, comment=, hidden=true} at java.util.stream.Collectors.lambda$throwingMerger$0(Collectors.java:133) at java.util.HashMap.merge(HashMap.java:1254) at java.util.stream.Collectors.lambda$toMap$58(Collectors.java:1320) at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169) at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) at com.facebook.presto.elasticsearch.ElasticsearchMetadata.getColumnHandles(ElasticsearchMetadata.java:133) at com.facebook.presto.metadata.MetadataManager.getColumnHandles(MetadataManager.java:409) at com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.visitTable(StatementAnalyzer.java:851) at com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.visitTable(StatementAnalyzer.java:258) at com.facebook.presto.sql.tree.Table.accept(Table.java:53) at com.facebook.presto.sql.tree.AstVisitor.process(AstVisitor.java:27) at com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.process(StatementAnalyzer.java:270) at com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.analyzeFrom(StatementAnalyzer.java:1772) at com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.visitQuerySpecification(StatementAnalyzer.java:954) at com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.visitQuerySpecification(StatementAnalyzer.java:258) at com.facebook.presto.sql.tree.QuerySpecification.accept(QuerySpecification.java:127) at com.facebook.presto.sql.tree.AstVisitor.process(AstVisitor.java:27) at com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.process(StatementAnalyzer.java:270) at com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.process(StatementAnalyzer.java:280) at com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.visitQuery(StatementAnalyzer.java:676) at com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.visitQuery(StatementAnalyzer.java:258) at com.facebook.presto.sql.tree.Query.accept(Query.java:94) at com.facebook.presto.sql.tree.AstVisitor.process(AstVisitor.java:27) at com.facebook.presto.sql.analyzer.StatementAnalyzer$Visitor.process(StatementAnalyzer.java:270) at com.facebook.presto.sql.analyzer.StatementAnalyzer.analyze(StatementAnalyzer.java:244) at com.facebook.presto.sql.analyzer.Analyzer.analyze(Analyzer.java:72) at com.facebook.presto.sql.analyzer.Analyzer.analyze(Analyzer.java:64) at com.facebook.presto.execution.SqlQueryExecution.(SqlQueryExecution.java:176) at com.facebook.presto.execution.SqlQueryExecution$SqlQueryExecutionFactory.createQueryExecution(SqlQueryExecution.java:705) at com.facebook.presto.execution.SqlQueryManager.createQueryInternal(SqlQueryManager.java:444) at com.facebook.presto.execution.SqlQueryManager.lambda$createQuery$3(SqlQueryManager.java:377) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) ] at com.facebook.presto.client.StatementClientV1.requestFailedException(StatementClientV1.java:436) at com.facebook.presto.client.StatementClientV1.advance(StatementClientV1.java:383) at com.facebook.presto.cli.StatusPrinter.printInitialStatusUpdates(StatusPrinter.java:123) at com.facebook.presto.cli.Query.renderQueryOutput(Query.java:137) at com.facebook.presto.cli.Query.renderOutput(Query.java:121) at com.facebook.presto.cli.Console.process(Console.java:312) at com.facebook.presto.cli.Console.runConsole(Console.java:256) at com.facebook.presto.cli.Console.run(Console.java:146) at com.facebook.presto.cli.Presto.main(Presto.java:31)

tooptoop4 commented 6 years ago

i see its reserved word, removing it from es index then error disappears

icelemonna commented 5 years ago

i see its reserved word, removing it from es index then error disappears

Hi,l met the same problem, but i don`t understand the solution. Could you please explain how to remove the reserved word?

harbby commented 5 years ago

@icelemonna Hi, in order to make es query dsl available for each field, we have added _field hidden fields for all fields, but _id, _type, _store are fields that are originally es, so there are some conflicts here.

harbby commented 5 years ago

@icelemonna I currently have a plan to remove reserved fields. Please pay attention to #6

harbby commented 5 years ago

@icelemonna Hi: He is referring to removing the type column from the index.

icelemonna commented 5 years ago

@harbby Thanks a lot. But i have other indexes that have the type column and i can do the select phases on them using presto. Maybe I shall take a look at the program that produces the index.