Hi all,
We are trying to use Drill to access HDFS which is secured by Kerberos.
We are executing a query to hit a HDFS file through a user account
"abc" which has kerberos tickets already fetched i.e we are able to
use hadoop command to read/write files on hdfs.
But we are getting the following exception while trying to run the
following command
bin/sqlline -f test.sql --verbose=true --force=true -u
jdbc:drill:schema=dfs;zk=localhost:2181
test.sql :
select * from dfs.`/user/abc/tmp/test.csv` limit 10
[Error Id: 304156bf-0217-4f94-a7ea-cfc5e266e9fe on xyz.def.com:31010]
(state=,code=0)
java.sql.SQLException: PERMISSION ERROR: Not authorized to list or
query tables in schema [dfs.default]
[Error Id: 304156bf-0217-4f94-a7ea-cfc5e266e9fe on xyz.def.com:31010]
at
org.apache.drill.jdbc.impl.DrillCursor.nextRowInternally(DrillCursor.java:214)
at
org.apache.drill.jdbc.impl.DrillCursor.loadInitialSchema(DrillCursor.java:257)
at
org.apache.drill.jdbc.impl.DrillResultSetImpl.execute(DrillResultSetImpl.java:1362)
at
org.apache.drill.jdbc.impl.DrillResultSetImpl.execute(DrillResultSetImpl.java:72)
at
net.hydromatic.avatica.AvaticaConnection.executeQueryInternal(AvaticaConnection.java:404)
at
net.hydromatic.avatica.AvaticaStatement.executeQueryInternal(AvaticaStatement.java:351)
at
net.hydromatic.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:338)
at net.hydromatic.avatica.AvaticaStatement.execute(AvaticaStatement.java:69)
at
org.apache.drill.jdbc.impl.DrillStatementImpl.execute(DrillStatementImpl.java:85)
at sqlline.Commands.execute(Commands.java:841)
at sqlline.Commands.sql(Commands.java:751)
at sqlline.SqlLine.dispatch(SqlLine.java:738)
at sqlline.SqlLine.runCommands(SqlLine.java:1641)
at sqlline.Commands.run(Commands.java:1304)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at sqlline.ReflectiveCommandHandler.execute(ReflectiveCommandHandler.java:36)
at sqlline.SqlLine.dispatch(SqlLine.java:734)
at sqlline.SqlLine.initArgs(SqlLine.java:544)
at sqlline.SqlLine.begin(SqlLine.java:587)
at sqlline.SqlLine.start(SqlLine.java:366)
at sqlline.SqlLine.main(SqlLine.java:259)
Caused by: org.apache.drill.common.exceptions.UserRemoteException:
PERMISSION ERROR: Not authorized to list or query tables in schema
[dfs.default]
Our dfs storage plugin config looks like :
{
"type": "file",
"enabled": true,
"connection": "hdfs://<NAMENODE-HOST>:<PORT>",
"workspaces": {
"root": {
"location": "/user/abc",
"writable": false,
"defaultInputFormat": null
},
"tmp": {
"location": "/user/abc/tmp",
"writable": true,
"defaultInputFormat": null
}
},
"formats": {
"psv": {
"type": "text",
"extensions": [
"tbl"
],
"delimiter": "|"
},
"csv": {
"type": "text",
"extensions": [
"csv"
],
"delimiter": ","
},
"tsv": {
"type": "text",
"delimiter": "\u0001"
},
"parquet": {
"type": "parquet"
},
"json": {
"type": "json"
},
"avro": {
"type": "avro"
}
}
}
Thanks
Narayan