You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@drill.apache.org by Paul Mogren <PM...@commercehub.com> on 2015/08/28 19:04:53 UTC

S3 object names may need URL encoding

Amazon S3 allows object names to contain characters, such as colon(:),
that when used in URI¹s need to be percent-encoded.
When Drill is directed to read such an object ­ either when pointed
directly at an encoded object name, or upon encountering the object in a
folder scan ­ the encoding is discarded by Drill, resulting in an
exception. I¹m not saying it¹s a good practice to have such names, but I
expected Drill to handle it.


SELECT <columns> FROM
<bucket>.<workspace>.`<folder>/18%3A53%3A49.752-95a70665-6617-4252-9588-54a
10541815b.json`

or

SELECT <columns> FROM <bucket>.<workspace>.`<folder>`
  (when <folder> contains an object named
'18:53:49.752-95a70665-6617-4252-9588-54a10541815b.json¹)

java.sql.SQLException: PARSE ERROR: java.net.URISyntaxException: Relative
path in absolute URI:
18:53:49.752-95a70665-6617-4252-9588-54a10541815b.json
[Error Id: 2c763a43-775f-42ab-89b0-66947c9e11dc on
ip-172-24-7-70.ec2.internal:31010]
        at 
org.apache.drill.jdbc.impl.DrillCursor.nextRowInternally(DrillCursor.java:2
14) ~[na:na]
        at 
org.apache.drill.jdbc.impl.DrillCursor.loadInitialSchema(DrillCursor.java:2
57) ~[na:na]
        at 
org.apache.drill.jdbc.impl.DrillResultSetImpl.execute(DrillResultSetImpl.ja
va:1362) ~[na:na]
        at 
org.apache.drill.jdbc.impl.DrillResultSetImpl.execute(DrillResultSetImpl.ja
va:72) ~[na:na]
        at 
net.hydromatic.avatica.AvaticaConnection.executeQueryInternal(AvaticaConnec
tion.java:404) ~[na:na]
        at 
net.hydromatic.avatica.AvaticaStatement.executeQueryInternal(AvaticaStateme
nt.java:351) ~[na:na]
        at 
net.hydromatic.avatica.AvaticaStatement.executeQuery(AvaticaStatement.java:
78) ~[na:na]
        at 
org.apache.drill.jdbc.impl.DrillStatementImpl.executeQuery(DrillStatementIm
pl.java:96) ~[na:na]