2015/03/02 Version 1.0.0
データベースとテーブル¶
Note
解析オプションにおけるオブジェクトキーの扱いについて
Note
データベース作成およびテーブル作成 APIで作成されるオブジェクトについて
データベース¶
Note
データベース名には以下の制約があります。
- 文字列の長さが3~63の範囲内である。
- 小文字(a-z)、数字(0-9)で構成される。
- ‘default’ではない。
ストレージの1つのバケット (= データベース) に格納可能なオブジェクトの数に制限はありませんが、バケットは1契約につき最大で100個まで作成することができます。データベース名’default’は予約語のため使用できません。
Note
データベースへのアクセス権限について
データベースを作成および利用する際は、同名のバケットに対するreadおよびwriteの権限が必要です。詳しくはストレージの開発者ガイドをご覧下さい。
テーブル¶
Note
テーブル名には以下の制約があります。
- 文字列の長さが1~128の範囲内である。
- 半角英小文字(a-z)、数字(0-9)とアンダースコア(_)で構成される。
Note
フォーマット¶
APIとフォーマット¶
APIごとに使用可能なフォーマットは異なります。
API | 入出力方向 | csv | tsv | json | json_agent |
---|---|---|---|---|---|
テーブル作成 | 入力 | ○ | ○ | ○ | ○ |
クエリ発行 (HiveQL) | 出力 | ○ | ○ | ☓ | ☓ |
クエリ発行 (Split) | 入出力 | ○ | ○ | ○ | ☓ |
テーブル作成APIでは、入力となる解析対象データのフォーマットを指定します。クエリ発行 (HiveQL) APIでは、出力結果のフォーマットを指定します。また、クエリ発行(Split)APIは入力および出力で同じフォーマットを利用します。
スキーマ¶
- スキーマ
1つ以上のカラム定義をカンマで区切って指定します。
<カラム定義>,<カラム定義>, ... ,<カラム定義>- カラム定義
カラム名と型をスペースで区切って記述します。
<カラム名> <型>- カラム名
- アルファベットとアンダースコアで指定します。大文字と小文字の区別はなく、全て小文字として扱います。
- 型
利用できる型¶
collections¶
collectionsグループの型は、可変長のデータを取り扱います。
定義 | 概要 | 対応フォーマット |
---|---|---|
array<data_type> |
|
csv, tsv, json, json_agent |
map<primitive, data_type> |
|
json, json_agent |
struct<col_name : data_type, ...> |
|
json, json_agent |
uniontype<data_type, data_type, ...> |
|
なし |
data_typeには全ての型を、primitive_typeにはグループがprimitiveの型を、col_nameには任意のカラム名を指定する事ができます。
primitive¶
primitiveグループの型は、文字列や数値といった基本的な型を取り扱います。
定義 | 概要 | 対応フォーマット |
---|---|---|
tinyint | -128から127の数値 | csv, tsv, json, json_agent |
smallint | -32,768から32,767の数値 | csv, tsv, json, json_agent |
int | -2,147,483,648から2,147,483,647の数値 | csv, tsv, json, json_agent |
bigint | -9,223,372,036,854,775,808から9,223,372,036,854,775,807の数値 | csv, tsv, json, json_agent |
float | 4Byteの単精度小数 | csv, tsv, json, json_agent |
double | 8Byteの倍精度小数 | csv, tsv, json, json_agent |
string | 文字列 | csv, tsv, json, json_agent |
boolean | trueまたはfalseの真偽値 | csv, tsv, json, json_agent |
timestamp | yyyy-mm-dd hh:mm:ss[.f ...]で表される時刻 | csv, tsv, json, json_agent |
binary | RFC3548で規定されているBase64 URLSafeエンコードされたバイナリ文字列 | csv, tsv, json, json_agent |
フォーマットの詳細¶
csv¶
csv形式で格納されたデータ形式です。
各行はLFによる改行 (\n) で区切られている必要があり、要素中にLF (\n) を含む事は出来ません。
クオート文字およびエスケープ文字にはダブルクオート(”)を用います。
また、各ファイル(オブジェクト)の先頭にタイトル文字列が含まれていないデータである必要があります。
スキーマ¶
- 入力データ
- “1”,”a”,”b”,”c”,”abc”
- スキーマ
- “v array<string>”
- HiveQL文
- SELECT v[1] FROM db.tbl
- 結果
- “a”
- 入力データ
- “1”,”a”,”b”,”c”,”abc”
- スキーマ
- “id string, a string, b string, c string, all string”
- HiveQL文
- SELECT id, all FROM db.tbl
- 結果
- “1”, “abc”
型¶
Note
不正な値の取り扱いについて
tinyint、smallint、int、bigint、float、double型は不正な文字列を0または0.0として扱います。その他の型は、不正な文字列をNULL値として取り扱い、空文字列として出力されます。
解析対象データのサンプル¶
“1”,”value1”,”value2”“2”,”value1”,”value2”“3”,”value1”,”value2”“4”,”value1”,”value2”
tsv¶
tsv形式で格納されたデータ形式です。
その他制約はcsvと同様です。
スキーマ¶
csvと同様です。
型¶
csvと同様です。
解析対象データのサンプル¶
1\t”value1”\t”value2”2\t”value1”\t”value2”3\t”value1”\t”value2”4\t”value1”\t”value2”
json¶
スキーマ¶
デフォルトスキーマを利用する場合
入力データ{“id” : 1, “data” : “sample data 1”, “toLowerCase” : “toLowerCase”}スキーマ“v map<string, string>”HiveQL文SELECT v[“id”], v[“data”], v[“tolowercase”] FROM db.tbl結果(csv形式の場合)“1”,”sample data 1”,”toLowerCase”
スキーマでラベルを指定する場合
入力データ{“id” : 1, “data” : “sample data 1”, “toLowerCase” : “toLowerCase”}スキーマ“id int, data string, tolowercase string”HiveQL文SELECT id, data, tolowercase FROM db.tbl結果(csv形式の場合)“1”,”sample data 1”,”toLowerCase”
型¶
UNION型を除く全ての型が使用可能です。
Note
不正な値の取り扱いについて
tinyint、smallint、int、bigint、float、double型は不正な文字列を0または0.0として扱います。その他の型は、不正な文字列をNULL値として取り扱い、nullと出力されます。
解析対象データのサンプル¶
{“key1” : “value1”, “key2” : “value2”}
{“key1” : “value1”, “key2” : “value2”}
{“key1” : “value1”, “key2” : “value2”}
json_agent¶
スキーマ¶
型¶
jsonと同様です。
解析対象データのサンプル¶
{“time” : 1419220251, “v” : {“key1” : “value1”, “key2” : “value2”, “id” : 1}}
{“time” : 1419220252, “v” : {“key1” : “value1”, “key2” : “value2”, “id” : 2}}
{“time” : 1419220253, “v” : {“key1” : “value1”, “key2” : “value2”, “id” : 3}}