hive

hiveのloadコマンドに謎の制約

LOAD DATA LOCAL INPATH '/dir/_hoge' ... みたく、ファイル名が “_” 始まりのファイルをLOADしようとしたら、何故か「そんなファイルはねえ!」と怒られエラーになった。 回避策としては、頭にワイルドカード入れる。以下なら正常終了。 LOAD DATA LOCAL IN…

hive のサンプリングの意味を勘違いしてた。

BUCKET x OUT OF yてやつだが、最初、「全体の x/y を抽出」だと思ったんだが、そうではなく、 「全体をy分割したx番目を抽出」て意味だったらしい。 なので、 BUCKET 1 OUT OF 100としても BUCKET 2 OUT OF 100としても抽出される件数はほぼ同じで1/100。但…

hive のフィールドセパレータ(フィールド区切り文字)変更

参考 http://d.hatena.ne.jp/wyukawa/20140107/1389093460 INSERT OVERWRITE LOCAL DIRECTORY '...' SELECT concat_ws('\t', a, b) FROM … WHERE ...なるほど。そういう手があるか。 テーブルの全カラム落としたい時は面倒くさいな。なんかいい方法あるかな?

CREATE TABLE のオプション

CREATE TABLE に CLUSTERED BY、SORTED BY が指定できるようになっている。おおっ!時間ある時に試してみたい。・どんな時に有効なのか?(ある程度想像できるが) ・データをLOADする時は、自分で CLUSTERED BY、SORTED BY して入れるように注意しなければ…

テストデータの入れ方

検証などでちょろっとデータを入れる際、「ファイル作ってLOAD」とやっていたが、こういうやり方もあるな!と記事の内容とは関係ないところでうなずく。http://www.ne.jp/asahi/hishidama/home/tech/apache/hive/type.htmlなんでもいいので1行だけデータの入…

クリックストリーム的なデータの扱い

window関数がないので、セッションやクリックストリーム的なデータ処理をするのは難しいと思っていたが、arrayを使えば同じようなことがそこそこできるかも! ただ、group by から array を生成する関数は、重複を排除する collect_set しかないらしい。 重…

dynamic partition の落とし穴

例えば、int型のdayという項目をpartition にしている場合、dynamic パーティションを使うと、dayにint以外のデータが入ってしまうケースがある。 その場合、day を例えば以下のように範囲指定すると、クエリ実行後しばらくして NullPointerException になっ…