Ich versuche, Parkett-Dateien auf einem hdfs-Cluster über Apache Drill (verteilter Modus) abzufragen. Ich habe einen neuen Speicher Plugin namens 'hdfs' erstellt, die folgenden Konfiguration enthält:Berechtigungsfehler | Apach Drill Abfrage | HDFS
{
"type": "file",
"enabled": true,
"connection": "hdfs://<my-name-node-host>:8020",
"config": null,
"workspaces": {
"root": {
"location": "/",
"writable": true,
"defaultInputFormat": null
}
},
"formats": {
"json": {
"type": "json",
"extensions": [
"json"
]
},
"parquet": {
"type": "parquet"
}
}
}
In der hadoop fs ich die Beispieldatei region.parquet in /user/tj/
Ordnern. Es hat den Besitzer und die Gruppe als hdfs:hdfs
standardmäßig und ich möchte es so behalten.
Aber wenn ich versuche, es von Apache Drill UI über folgende SQL-Abfrage abzufragen: SELECT * FROM hdfs
. /user/tj/region.parquet
Es wirft die Ausnahme, wie unten:
org.apache.drill.common.exceptions.UserRemoteException: SYSTEM ERROR: RemoteException: Permission denied: user=, access=EXECUTE, inode="/user/tj/region.parquet/.drill.parquet_metadata":hdfs:hdfs:-rw-r--r-- at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:319) at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkTraverse(FSPermissionChecker.java:259) at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:205) at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:190) at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkPermission(FSDirectory.java:1827) at org.apache.hadoop.hdfs.server.namenode.FSDirStatAndListingOp.getFileInfo(FSDirStatAndListingOp.java:108) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getFileInfo(FSNamesystem.java:3972) at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getFileInfo(NameNodeRpcServer.java:1130) at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getFileInfo(ClientNamenodeProtocolServerSideTranslatorPB.java:851) at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java) at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:640) at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:982) at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2313) at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2309) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1724) at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2307) [Error Id: 24bf0cf0-0181-4c72-97ee-4b4eb98771bf on :31010]
Wie behebe ich die Einwilligung Ausgabe der hadoop Cluster-Dateien mit Apache Bohrer abfragen?
Wie die Abfrage als hdfs Benutzer ausführen?
Gemäß der docsm die Clients für die Benutzer impersontation nicht unterstützt wird: Drill Web Console, REST-API. Ich benutze Drill Web-Konsole, so wie Sie das gleiche erreichen. – taransaini43
Wie auch immer, ich begann den Drillbit-Service auf allen Hosts als hdfs Benutzer als eine schnelle Lösung - jetzt arbeiten. Danke für Ihre Hilfe. – taransaini43