SQL問合せを発行して結果を返す
post
/spatialviewer/api/v1/spark/sqlQuery
SQL問合せをSparkに発行して結果を返します。
リクエスト
サポートされるメディア・タイプ
- application/json
問合せパラメータ
- allStringTypeColumns: boolean
trueの場合、ジオメトリを除くすべての出力列が二重引用符で囲まれます。デフォルト値:
false
- analysisName: string
分析の名前。outputAsAnalysisがtrueに設定されている場合、このパラメータは必須です
- asynchronous: boolean
trueの場合、この操作は非同期で実行されます。デフォルト値:
false
- fullResult: boolean
falseの場合、非同期の場合、レスポンスにはHDFS内の結果の場所が含まれ、実際の結果は含まれません。デフォルト値:
true
- outputAsAnalysis: boolean
trueの場合、索引はSpatialViewer UIの分析結果に追加されますデフォルト値:
false
- resultAsGeoJson: boolean
trueの場合、マップ上に結果を表示するためにMap APIのデータ・ソースとして使用できる、GeoJSONとしてサービスからレスポンスが返されます。ジオメトリは、geometryという名前のフィールドに戻される必要があります。例: SELECT geometry, friends_count...デフォルト値:
false
SQL問合せの詳細
ルート・スキーマ: SQLQueryInfo
型:
ソースの表示
object
- jarWithNeededClasses(optional): string
カスタムRecordInfoProviderまたはInputFormatのようなユーザー定義クラスを持つJAR名。InputFormatクラスまたはRecordInfoProviderクラスがAPI、またはHadoop APIクラスにない場合、ユーザー定義クラスのJARが提供されます。このjarを使用するには、/opt/oracle/oracle-spatial-graph/spatial/web-server/spatialviewer/WEB-INF/libディレクトリに追加し、サーバーを再起動する必要があります。useIndexがfalseの場合に設定可能なオプションのプロパティ。例:
myjar.jar
- outputPath(optional): string
ジョブの出力パス。asynchronousがtrueの場合は、このプロパティを指定します。例:
/user/oracle/spatialviewer/SQLQueryResult
- query(optional): string
SQL問合せ。例:
SELECT geometry, friends_count, location, followers_count FROM tweets WHERE ST_Contains( ST_Polygon('{"type": "Polygon","coordinates": [[[-106, 25], [-106, 30], [-104, 30], [-104, 25], [-106, 25]]]}', 8307) , ST_Point(geometry, 8307) , 0.05) and followers_count > 50
- stringTypeColumns(optional): string
二重引用符で囲まれる出力列の索引。索引はカンマで区切られています。最初の索引は0です。例:
2,3
- tables(optional): array tables
ネストされたスキーマ: Table
型:
ソースの表示
object
- columnNames(optional): array columnNames
表の列に含めるRecordInfoProviderの追加フィールド。列ジオメトリは常に最初の列であり、GeoJSON形式のジオメトリが含まれています。
- dataPath(optional): string
HDFS内のファイルのパス。例:
/user/oracle/spatialviewer/tweetsJune.json
- inputFormatClass(optional): string
入力形式クラス。オプションのプロパティ。入力形式クラスが指定されていない場合は、SparkContextのtextFileが使用されます。例:
oracle.spatial.hadoop.vector.geojson.mapred.GeoJsonInputFormat
- keyClass(optional): string
入力形式のキーのクラス。入力形式が定義されている場合、このプロパティは必須です。例:
org.apache.hadoop.io.LongWritable
- name(optional): string
表名。例:
tweets
- recordInfoProviderClass(optional): string
空間情報を提供するクラス。例:
oracle.spatial.spark.vector.recordinfoprovider.GeoJsonRecordInfoProvider
- srid(optional): integer(int32)
ジオメトリのSRID。例:
8307
- valueClass(optional): string
入力形式の値のクラス。入力形式が定義されている場合、このプロパティは必須です。例:
org.apache.hadoop.io.Text
レスポンス
サポートされるメディア・タイプ
- application/json
200レスポンス
要求が成功しました。fullResultがfalseの場合、レスポンスには、HDFS内の結果の場所が含まれています。
ネストされたスキーマ: geometry
型:
object
例:
{
"type":"Point",
"coordinates":[
-3.6853,
40.40197
]
}
202レスポンス
非同期リクエストを受け入れました
ルート・スキーマ: AsyncSparkSQLJobResponse
型:
ソースの表示
object
- o:successCode(optional): string
成功コード。例:
SV-05013
- response(optional): string
レスポンスには、ジョブを追跡するためのリソース・マネージャWebアプリケーションのURLの場所が含まれています(Hadoopパラメータyarn.resourcemanager.webapp.addressの構成を参照してください)。例:
http://resource.manager.webapp:8088
- status(optional): string
成功またはエラー例:
success
- title(optional): string
サービスのタイトル。例:
Execute Spark SQL query.
例
次の例では、cURLを使用してRESTリソースに対するPOSTリクエストを発行することによって、Spark SQL問合せを実行する方法を示しています。
curl -v -X POST "http://localhost:8045/spatialviewer/api/v1/spark/sqlQuery?fullResult=true" -H "accept: application/json" -H "content-type: application/json" -d "{ \"query\": \"SELECT geometry, friends_count, location, followers_count FROM tweets WHERE ST_Contains( ST_Polygon('{\\\"type\\\": \\\"Polygon\\\",\\\"coordinates\\\": [[[-106, 25], [-106, 30], [-104, 30], [-104, 25], [-106, 25]]]}', 8307) , ST_Point(geometry, 8307) , 0.05) and followers_count > 50\", \"stringTypeColumns\": \"2,3\", \"tables\": [ { \"name\": \"tweets\", \"columnNames\": [ \"friends_count\", \"location\", \"followers_count\" ], \"srid\": 8307, \"dataPath\": \"/user/oracle/tweets.json\", \"inputFormatClass\": \"oracle.spatial.hadoop.vector.geojson.mapred.GeoJsonInputFormat\", \"keyClass\": \"org.apache.hadoop.io.LongWritable\", \"valueClass\": \"org.apache.hadoop.io.Text\", \"recordInfoProviderClass\": \"oracle.spatial.spark.vector.recordinfoprovider.GeoJsonRecordInfoProvider\" } ]}"
レスポンス・ヘッダーの例
次に、レスポンス・ヘッダーの例を示します。
HTTP/1.1 200 OK Date: Wed, 15 Nov 2017 17:50:38 GMT Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Allow-Methods: GET, POST, DELETE, PUT Access-Control-Allow-Headers: Content-Type, Accept Transfer-Encoding: chunked Content-Type: application/json
レスポンス本文の例
次の例は、レスポンス本文の内容をJSON形式で示したものです(1つのレコードを含みます)。
{"items":[{"geometry":{"type":"Point","coordinates":[-104.41002,29.5404]},"friends_count":72,"location":"Chihuahua","followers_count":"94"}]}