APIコールのレコードをS3に送信し、次に特定のフィールドのみをredshiftに送信しようとしています。JSONPathsファイルエラーを使用してKinesisからRedshift COPYコマンド
{
"user": "user_name",
"type": "GET",
"date": "2016-03-22 16:14:13",
"data": [{
"EmpID": 1,
"LastName": "Smith",
"FirstName": "Bob",
"DOB": "1910-01-01",
"SSN": "123456789",
"HireDate": "1910-01-01",
"City": "Town",
"Address": "123 Abc"
}]
}「データ」フィールドには、クエリが返す場合は、上記の例や多くのレコードのように一つのレコードが含まれていてもよい
:たとえば、私のプログラムが正常にS3へ次JSONを送信します複数の結果。私は、同じ列名を持つredshiftのデータから "Employee"テーブルに情報だけをコピーしたいと思います。 json 'auto'でコピーすると、最上位レベルのフィールドのみが解析されるため、機能しません。
{
"jsonpaths": [
"$.data[0].EmpID",
"$.data[0].LastName",
"$.data[0].FirstName",
"$.data[0].DOB",
"$.data[0].SSN",
"$.data[0].HireDate",
"$.data[0].City",
"$.data[0].Address",
]
}ここで
は、例えば、私のプログラムの実行です:- 私のAWSを実行し、これを解決するために、私は次のようなJSONのパスのファイルを作成しましたTomcatサーバー上のJava Webプロジェクト
- http://localhost:000/projectname/rest/employee/1を入力します(従業員ID 1のjsonオブジェクトをmy SQLから正常に返します)。トライへ
- を:RVERデータベース)
- は、コールに関するメタデータと、このポストの上部にJSONオブジェクトを作成し、クエリ
- の結果はに正常にこのオブジェクトを書き込み「//バケツ/プレフィックス/ S3」コピーコマンドを実行して失敗します。ロードが失敗した理由の詳細については、Redshiftクラスタのロードタブに移動し、コマンドのステータスが終了し、SQLフィールドに「従業員のコピーを」と表示されます。
マニュアルバージョンの以下のコピーコマンドは、私は次のエラーを取得:「ERROR:XX000を:マニフェストファイルが正しいJSON形式ではありません」
COPY employee FROM 's3://bucket/prefix/filename' CREDENTIALS 'aws_access_key_id=<>;aws_secret_access_key=<>' JSON 's3://bucket/jsonpaths.json';
マニフェストの問題に対処するために、私は次のファイルを作成:
{
"entries": [
{"url":"s3://bucket/prefix/file", "mandatory":true}
]
}
S3に保存された完全なJSONファイルとして生のフィールド値で「が見つかりません区切り文字」:これはstl_load_errorを生み出す
COPY employee
FROM 's3://bucket/manifest.json'
CREDENTIALS'aws_access_key_id=<>;aws_secret_access_key=<>'
MANIFEST
:
は、コピーコマンドを実行しました。以前のコピーコマンドからjsonPathsファイル行を追加すると、前と同じマニフェストエラーが発生します。
質問:
は私JSONPathsが正しい形式でファイル-is?
- これはJSONArrayの下位レベルから抽出するための最良の方法ですか?
- マニフェストファイルの形式は正しいですか?マニフェストファイルが必要な理由
メモ:メタデータを追加する前に、s3をテストして、読み込みたいフィールドだけでs3を接続して正常に読み込んだので、赤のシフト先が正しく設定されていない可能性があります。
ありがとうございました!
ありがとうございます!私はそれを逃したとは信じられません。 Kinesisで発行された自動コピーコマンドはまだ機能しませんが、手動コピーコマンドは少なくとも機能します。 – awsQuestion
あなたはどの部分を欠席しましたか?最後のカンマまたは表記法の表記法の変更(ドット表記法) – TheProletariat
@ketan vijayvargiya、どのようにブラケット記法を使ってすべてのオブジェクトのためにそれを扱うでしょうか? –