2017-09-11 4 views
0

Apache Drillの新機能です。 Apache Drillを使用して私のPostgreSQLデータベース に問い合わせる必要があります。 私はdocumentationに行き、 私のPostgresデータベース用のストレージプラグインを設定することができました。Apache DrillによるPostgresのコンポジットデータへのアクセス

{ 

  "type": "jdbc", 

  "driver": "org.postgresql.Driver", 

  "url": "jdbc:postgresql://localhost/mydb", 

  "username": <username>, 

  "password": <password>, 

  "enabled": true 

} 



私は正常に主要データ型が、複合データ型を持っている ものを照会することができませんでし持つテーブルを照会することができます。 私は様々な方法でそれを照会しようとしました、example

この

は、例外は私が取得さ:

Caused by: java.lang.NullPointerException: null 
at 
org.apache.calcite.sql2rel.RelStructuredTypeFlattener.restructureFields(RelStructuredTypeFlattener.java:201) 
~[calcite-core-1.4.0-drill-r21.jar:1.4.0-drill-r21] 
at 
org.apache.calcite.sql2rel.RelStructuredTypeFlattener.restructure(RelStructuredTypeFlattener.java:225) 
~[calcite-core-1.4.0-drill-r21.jar:1.4.0-drill-r21] 
at 
org.apache.calcite.sql2rel.RelStructuredTypeFlattener.restructureFields(RelStructuredTypeFlattener.java:205) 
~[calcite-core-1.4.0-drill-r21.jar:1.4.0-drill-r21] 
at 
org.apache.calcite.sql2rel.RelStructuredTypeFlattener.rewrite(RelStructuredTypeFlattener.java:184) 
~[calcite-core-1.4.0-drill-r21.jar:1.4.0-drill-r21] 
at 
org.apache.calcite.sql2rel.SqlToRelConverter.flattenTypes(SqlToRelConverter.java:435) 
~[calcite-core-1.4.0-drill-r21.jar:1.4.0-drill-r21] 
at 
org.apache.drill.exec.planner.sql.SqlConverter.toRel(SqlConverter.java:270) 
~[drill-java-exec-1.11.0.jar:1.11.0] 
at 
org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.convertToRel(DefaultSqlHandler.java:638) 
~[drill-java-exec-1.11.0.jar:1.11.0] 
at 
org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.validateAndConvert(DefaultSqlHandler.java:196) 
~[drill-java-exec-1.11.0.jar:1.11.0] 
at 
org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.getPlan(DefaultSqlHandler.java:165) 
~[drill-java-exec-1.11.0.jar:1.11.0] 
at 
org.apache.drill.exec.planner.sql.DrillSqlWorker.getQueryPlan(DrillSqlWorker.java:131) 
~[drill-java-exec-1.11.0.jar:1.11.0] 
at 
org.apache.drill.exec.planner.sql.DrillSqlWorker.getPlan(DrillSqlWorker.java:79) 
~[drill-java-exec-1.11.0.jar:1.11.0] 
at org.apache.drill.exec.work.foreman.Foreman.runSQL(Foreman.java:1050) 
[drill-java-exec-1.11.0.jar:1.11.0] 
at org.apache.drill.exec.work.foreman.Foreman.run(Foreman.java:280) 
[drill-java-exec-1.11.0.jar:1.11.0] 

はない可能で、すべてのドリルで複合データ型を照会していますか? 何か不足している場合はお知らせください。

おかげ

答えて

1
データ型の

Apacheのドリルv1.11デベロッパーのドキュメント:https://drill.apache.org/docs/supported-data-types/

In this release of Drill, you cannot reference a composite type by name in a query, but Drill supports array values coming from data sources.

EDIT

私は、マニュアルでApacheのドリルコミュニティが提供する方法をしようと提案します。これは、セクション複合型からビット:

For example, you can use the index syntax to query data and get the value of an array element:

a[1]

You can refer to the value for a key in a map using dot notation:

t.m.k

The section “ Query Complex Data ” shows how to use composite types to access nested arrays. " Handling Different Data Types " includes examples of JSON maps and arrays. Drill provides functions for handling array and map types:

+0

あなたがこの問題を回避するために何か提案はありますか? – alex

+0

私はそのようにデータをクエリしようとしましたが、AssertionError:STRUCTUREDをスローします。クエリ:tb.account_user.descriptionをdoc.complexのレコードとしてtbとして選択します。ここで、account_userはmyオブジェクト、descriptionはその中のフィールドです。 doc:schema、complex:テーブル名。 – alex

関連する問題