tartarus created FLINK-28342:
--------------------------------

             Summary: Flink batch support for Hive StorageHandlers
                 Key: FLINK-28342
                 URL: https://issues.apache.org/jira/browse/FLINK-28342
             Project: Flink
          Issue Type: Sub-task
          Components: Connectors / Hive
            Reporter: tartarus


Hive introduced StorageHandlers when integrating Hbase, we can refer to the 
documentation:

[https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration]

[https://cwiki.apache.org/confluence/display/Hive/StorageHandlers]

Usually a Hive table does not set InputFormat if it uses StorageHandler, but 
currently Flink's MRSplitsGetter does not consider this case. 

When accessing an external Hbase table mapped by Hive using the Flink dialect, 
an NPE is thrown.
{code:java}
2022-07-01 15:03:09,240 ERROR 
org.apache.flink.runtime.source.coordinator.SourceCoordinator [] - Failed to 
create Source Enumerator for source Source: dp_workflow_dag_run_hbase[1]
org.apache.flink.util.FlinkRuntimeException: Could not enumerate file splits
        at 
org.apache.flink.connector.file.src.AbstractFileSource.createEnumerator(AbstractFileSource.java:143)
 ~[flink-connector-files-1.15.0.jar:1.15.0]
        at 
org.apache.flink.connectors.hive.HiveSource.createEnumerator(HiveSource.java:124)
 ~[flink-sql-connector-hive-2.3.6_2.12-1.15.0.jar:1.15.0]
        at 
org.apache.flink.runtime.source.coordinator.SourceCoordinator.start(SourceCoordinator.java:197)
 ~[flink-dist-1.15.0.jar:1.15.0]
        at 
org.apache.flink.runtime.operators.coordination.RecreateOnResetOperatorCoordinator$DeferrableCoordinator.applyCall(RecreateOnResetOperatorCoordinator.java:318)
 ~[flink-dist-1.15.0.jar:1.15.0]
        at 
org.apache.flink.runtime.operators.coordination.RecreateOnResetOperatorCoordinator.start(RecreateOnResetOperatorCoordinator.java:71)
 ~[flink-dist-1.15.0.jar:1.15.0]
        at 
org.apache.flink.runtime.operators.coordination.OperatorCoordinatorHolder.start(OperatorCoordinatorHolder.java:196)
 ~[flink-dist-1.15.0.jar:1.15.0]
        at 
org.apache.flink.runtime.scheduler.DefaultOperatorCoordinatorHandler.startOperatorCoordinators(DefaultOperatorCoordinatorHandler.java:165)
 ~[flink-dist-1.15.0.jar:1.15.0]
        at 
org.apache.flink.runtime.scheduler.DefaultOperatorCoordinatorHandler.registerAndStartNewCoordinators(DefaultOperatorCoordinatorHandler.java:159)
 ~[flink-dist-1.15.0.jar:1.15.0]
        at 
org.apache.flink.runtime.scheduler.adaptivebatch.AdaptiveBatchScheduler.initializeOperatorCoordinatorsFor(AdaptiveBatchScheduler.java:295)
 ~[flink-dist-1.15.0.jar:1.15.0]
        at 
org.apache.flink.runtime.scheduler.adaptivebatch.AdaptiveBatchScheduler.updateTopology(AdaptiveBatchScheduler.java:287)
 ~[flink-dist-1.15.0.jar:1.15.0]
        at 
org.apache.flink.runtime.scheduler.adaptivebatch.AdaptiveBatchScheduler.initializeVerticesIfPossible(AdaptiveBatchScheduler.java:181)
 ~[flink-dist-1.15.0.jar:1.15.0]
        at 
org.apache.flink.runtime.scheduler.adaptivebatch.AdaptiveBatchScheduler.startSchedulingInternal(AdaptiveBatchScheduler.java:147)
 ~[flink-dist-1.15.0.jar:1.15.0]
        at 
org.apache.flink.runtime.scheduler.SpeculativeScheduler.startSchedulingInternal(SpeculativeScheduler.java:162)
 ~[flink-dist-1.15.0.jar:1.15.0]
        at 
org.apache.flink.runtime.scheduler.SchedulerBase.startScheduling(SchedulerBase.java:626)
 ~[flink-dist-1.15.0.jar:1.15.0]
        at 
org.apache.flink.runtime.jobmaster.JobMaster.startScheduling(JobMaster.java:1092)
 ~[flink-dist-1.15.0.jar:1.15.0]
        at 
org.apache.flink.runtime.jobmaster.JobMaster.startJobExecution(JobMaster.java:965)
 ~[flink-dist-1.15.0.jar:1.15.0]
        at 
org.apache.flink.runtime.jobmaster.JobMaster.onStart(JobMaster.java:406) 
~[flink-dist-1.15.0.jar:1.15.0]
        at 
org.apache.flink.runtime.rpc.RpcEndpoint.internalCallOnStart(RpcEndpoint.java:181)
 ~[flink-dist-1.15.0.jar:1.15.0]
        at 
org.apache.flink.runtime.rpc.akka.AkkaRpcActor$StoppedState.lambda$start$0(AkkaRpcActor.java:612)
 ~[flink-rpc-akka_745a2262-f519-4375-8b64-8bf2f805f55a.jar:1.15.0]
        at 
org.apache.flink.runtime.concurrent.akka.ClassLoadingUtils.runWithContextClassLoader(ClassLoadingUtils.java:68)
 ~[flink-rpc-akka_745a2262-f519-4375-8b64-8bf2f805f55a.jar:1.15.0]
        at 
org.apache.flink.runtime.rpc.akka.AkkaRpcActor$StoppedState.start(AkkaRpcActor.java:611)
 ~[flink-rpc-akka_745a2262-f519-4375-8b64-8bf2f805f55a.jar:1.15.0]
        at 
org.apache.flink.runtime.rpc.akka.AkkaRpcActor.handleControlMessage(AkkaRpcActor.java:185)
 ~[flink-rpc-akka_745a2262-f519-4375-8b64-8bf2f805f55a.jar:1.15.0]
        at akka.japi.pf.UnitCaseStatement.apply(CaseStatements.scala:24) 
[flink-rpc-akka_745a2262-f519-4375-8b64-8bf2f805f55a.jar:1.15.0]
        at akka.japi.pf.UnitCaseStatement.apply(CaseStatements.scala:20) 
[flink-rpc-akka_745a2262-f519-4375-8b64-8bf2f805f55a.jar:1.15.0]
        at scala.PartialFunction.applyOrElse(PartialFunction.scala:123) 
[flink-rpc-akka_745a2262-f519-4375-8b64-8bf2f805f55a.jar:1.15.0]
        at scala.PartialFunction.applyOrElse$(PartialFunction.scala:122) 
[flink-rpc-akka_745a2262-f519-4375-8b64-8bf2f805f55a.jar:1.15.0]
        at akka.japi.pf.UnitCaseStatement.applyOrElse(CaseStatements.scala:20) 
[flink-rpc-akka_745a2262-f519-4375-8b64-8bf2f805f55a.jar:1.15.0]
        at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:171) 
[flink-rpc-akka_745a2262-f519-4375-8b64-8bf2f805f55a.jar:1.15.0]
        at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:172) 
[flink-rpc-akka_745a2262-f519-4375-8b64-8bf2f805f55a.jar:1.15.0]
        at akka.actor.Actor.aroundReceive(Actor.scala:537) 
[flink-rpc-akka_745a2262-f519-4375-8b64-8bf2f805f55a.jar:1.15.0]
        at akka.actor.Actor.aroundReceive$(Actor.scala:535) 
[flink-rpc-akka_745a2262-f519-4375-8b64-8bf2f805f55a.jar:1.15.0]
        at akka.actor.AbstractActor.aroundReceive(AbstractActor.scala:220) 
[flink-rpc-akka_745a2262-f519-4375-8b64-8bf2f805f55a.jar:1.15.0]
        at akka.actor.ActorCell.receiveMessage(ActorCell.scala:580) 
[flink-rpc-akka_745a2262-f519-4375-8b64-8bf2f805f55a.jar:1.15.0]
        at akka.actor.ActorCell.invoke(ActorCell.scala:548) 
[flink-rpc-akka_745a2262-f519-4375-8b64-8bf2f805f55a.jar:1.15.0]
        at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:270) 
[flink-rpc-akka_745a2262-f519-4375-8b64-8bf2f805f55a.jar:1.15.0]
        at akka.dispatch.Mailbox.run(Mailbox.scala:231) 
[flink-rpc-akka_745a2262-f519-4375-8b64-8bf2f805f55a.jar:1.15.0]
        at akka.dispatch.Mailbox.exec(Mailbox.scala:243) 
[flink-rpc-akka_745a2262-f519-4375-8b64-8bf2f805f55a.jar:1.15.0]
        at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) 
[?:1.8.0_102]
        at 
java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) 
[?:1.8.0_102]
        at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) 
[?:1.8.0_102]
        at 
java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) 
[?:1.8.0_102]
Caused by: java.io.IOException: Fail to create input splits.
        at 
org.apache.flink.connectors.hive.MRSplitsGetter.getHiveTablePartitionMRSplits(MRSplitsGetter.java:84)
 ~[flink-sql-connector-hive-2.3.6_2.12-1.15.0.jar:1.15.0]
        at 
org.apache.flink.connectors.hive.HiveSourceFileEnumerator.createInputSplits(HiveSourceFileEnumerator.java:69)
 ~[flink-sql-connector-hive-2.3.6_2.12-1.15.0.jar:1.15.0]
        at 
org.apache.flink.connectors.hive.HiveSourceFileEnumerator.enumerateSplits(HiveSourceFileEnumerator.java:60)
 ~[flink-sql-connector-hive-2.3.6_2.12-1.15.0.jar:1.15.0]
        at 
org.apache.flink.connector.file.src.AbstractFileSource.createEnumerator(AbstractFileSource.java:141)
 ~[flink-connector-files-1.15.0.jar:1.15.0]
        ... 40 more
Caused by: java.util.concurrent.ExecutionException: 
org.apache.flink.connectors.hive.FlinkHiveException: Unable to instantiate the 
hadoop input format
        at java.util.concurrent.FutureTask.report(FutureTask.java:122) 
~[?:1.8.0_102]
        at java.util.concurrent.FutureTask.get(FutureTask.java:192) 
~[?:1.8.0_102]
        at 
org.apache.flink.connectors.hive.MRSplitsGetter.getHiveTablePartitionMRSplits(MRSplitsGetter.java:79)
 ~[flink-sql-connector-hive-2.3.6_2.12-1.15.0.jar:1.15.0]
        at 
org.apache.flink.connectors.hive.HiveSourceFileEnumerator.createInputSplits(HiveSourceFileEnumerator.java:69)
 ~[flink-sql-connector-hive-2.3.6_2.12-1.15.0.jar:1.15.0]
        at 
org.apache.flink.connectors.hive.HiveSourceFileEnumerator.enumerateSplits(HiveSourceFileEnumerator.java:60)
 ~[flink-sql-connector-hive-2.3.6_2.12-1.15.0.jar:1.15.0]
        at 
org.apache.flink.connector.file.src.AbstractFileSource.createEnumerator(AbstractFileSource.java:141)
 ~[flink-connector-files-1.15.0.jar:1.15.0]
        ... 40 more
Caused by: org.apache.flink.connectors.hive.FlinkHiveException: Unable to 
instantiate the hadoop input format
        at 
org.apache.flink.connectors.hive.MRSplitsGetter$MRSplitter.call(MRSplitsGetter.java:126)
 ~[flink-sql-connector-hive-2.3.6_2.12-1.15.0.jar:1.15.0]
        at 
org.apache.flink.connectors.hive.MRSplitsGetter$MRSplitter.call(MRSplitsGetter.java:96)
 ~[flink-sql-connector-hive-2.3.6_2.12-1.15.0.jar:1.15.0]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
~[?:1.8.0_102]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
~[?:1.8.0_102]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
~[?:1.8.0_102]
        at java.lang.Thread.run(Thread.java:745) ~[?:1.8.0_102]
Caused by: java.lang.NullPointerException
        at java.lang.Class.forName0(Native Method) ~[?:1.8.0_102]
        at java.lang.Class.forName(Class.java:348) ~[?:1.8.0_102]
        at 
org.apache.flink.connectors.hive.MRSplitsGetter$MRSplitter.call(MRSplitsGetter.java:120)
 ~[flink-sql-connector-hive-2.3.6_2.12-1.15.0.jar:1.15.0]
        at 
org.apache.flink.connectors.hive.MRSplitsGetter$MRSplitter.call(MRSplitsGetter.java:96)
 ~[flink-sql-connector-hive-2.3.6_2.12-1.15.0.jar:1.15.0]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
~[?:1.8.0_102]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
~[?:1.8.0_102]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
~[?:1.8.0_102]
        at java.lang.Thread.run(Thread.java:745) ~[?:1.8.0_102] {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to