1

SnappyData v.0-5

目標: 永続的で複製された ROAD テーブルを作成し、Snappy Shell を使用して CSV ファイルからロードしたいと考えています。ID の重複を防ぐため、ROAD テーブルには主キーとして「road_id」が必要です。

私が試したコマンドは次のとおりです。

SET SCHEMA A;

DROP TABLE IF EXISTS ROAD;
DROP TABLE IF EXISTS STAGING_ROAD;

CREATE TABLE STAGING_ROAD 
(road_id string, name string)
USING com.databricks.spark.csv
OPTIONS(path 'roads.csv', header 'true');

CREATE TABLE ROAD
(
    road_id VARCHAR(64) NOT NULL,
    name VARCHAR(64) NOT NULL,
    CONSTRAINT road_PK PRIMARY KEY (road_id)
) USING row OPTIONS (BUCKETS '5', REPLICATE, PERSISTENT)
AS (select road_id, name from STAGING_ROAD);

これは動作しません。そして、私は自分の ROAD 作成をこれに落とし込んで、それが作成されるようにする必要があります。これには PK がありません。レプリケーションや永続性はありません。

CREATE TABLE ROAD USING row OPTIONS ()
AS (select road_id, name from STAGING_ROAD);

上記の目標を達成するには、SnappyData SQL ファイルをどのようにスクリプト化すればよいですか?

4

2 に答える 2

2

ここにいくつかのポイントがあります。いくつかの制約を設定したいので、最初にテーブルを作成する必要があります。その後、テーブルにデータを挿入できます。

a) CREATE TABLE ROAD (road_id VARCHAR(64) NOT NULL, name VARCHAR(64) NOT NULL, CONSTRAINT road_PK PRIMARY KEY (road_id)) USING 行オプション (PERSISTENT ''); REPLICATE キーワード (不要、デフォルトは複製) または BUCKET パラメーター (パーティション テーブル専用) を指定する必要はありません。

b) 理想的には、INSERT INTO ROAD (SELECT * FROM STAGING_ROAD) である必要があります。残念ながら、あなたが使用していると思われる csv,parquet in 0.5 release のような外部データからの一括挿入に対する SQL サポートはありません。これは最新のマスターで処理されており、後続のリリースで利用できるようになります。

c) 回避策は、Spark ジョブを作成し、作成された行テーブルに挿入することです。ドキュメントのhttp://snappydatainc.github.io/snappydata/jobs/セクションを参照できます。

他の情報が必要な場合はお知らせください。

于 2016-07-26T12:03:53.703 に答える