Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
こんにちは、昨年末に新しくノートPCを注文したら年明けに新モデルが発表されてしまったショックを未だ引きずっているエンジニアの回路(@qazx7412)です。 今回は昨年末に取り組んだAthenaを利用した集計バッチの高速化についての話をしようと思います。 あらすじ さて、私が普段関わっている配信システムには「売上集計」と呼ばれている夜間バッチがあります。 これがなにかといえば名前のとおり売上を集計する夜間バッチなのですが、配信システムにはユーザーが購入を行ったときに発行した購入キーとコンテンツIDおよびユーザーIDを紐付けて購入履歴として管理するテーブルがあり、ここから毎晩その日の購入の集計を行います。 実際のものとは異なりますがたとえばこんな感じです。 (purchase_records) key content_id user_id price unixtime - AAAAbbbb
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? この記事は更新をやめました。見てくださったみなさんありがとうございました!!!(もしかしたら再開するかもですが)。20210324 Glueのすぐ使えそうな操作 1.Glueの使い方的な①(GUIでジョブ実行) GUIだけでcsv->parquet変換処理してAthenaで見たい時 2.Glueの使い方的な②(csvデータをパーティション分割したparquetに変換) 元データにタイムスタンプが入ってるデータを、パーティションによるディレクトリ構成にしてデータ配置とフォーマットなど変換したい時 3.Glueの使い方的な③(CLIでジョブ
今回は Embulk を使って、CSV から MySQL にデータを投入してみたいと思います。 Embulk とは Embulk とはバルクデータローダーと呼ばれる、データ転送ツールです。 Fluentd を開発した Tresure Data によって開発され、Fluentd を知っている方は、Fluentd のバッチ版だと考えると理解しやすいと思います。 (Fluentd についてはこちらで記事にしています) Fluentd のように入力・出力のプラグインは多数公開されており、例えば、MySQL の入力プラグインと、ElasticSearch の出力プラグインを組み合わせることによって、MySQL のデータを ElasticSearch に移したりなど、異なるデータストア間でのデータの交換が容易に行うことができます。 作業環境 CentOS 7.2 Java 1.8.0_101 MySQ
GitHub - mbleigh/seed-fu: Advanced seed data handling for Rails, combining the best practices of several methods together. Gemfileに下記行を追加してbundle installする。 gem 'seed-fu', '~> 2.3'まずディレクトリとファイルを作成する。 $ mkdir db/fixtures $ touch db/fixtures/songs.rb CSVファイルから読み込むようにdb/fixtures/songs.rbを編集する。 ここで重要なのは(:ranking, :year)の部分で、ここに制約を定義しておけばデータが重複して登録されることがなくなる。 今回の場合はrankingとyearでデータが一意に決まるので指定しておく。もしran
システムの構築、新しい技術の習得、PythonやDevOpsなどに情熱を注ぐソフトウェア開発者です。現在はチューリッヒを拠点とするビッグデータのスタートアップで働いており、データ分析およびデータ管理ソリューションのためのPythonの技術を磨いています。 1 はじめに Python は開発時間を短縮できるという点で一般的に評価の高い言語です。しかし、Pythonを使って効率よくデータ分析をするには、思わぬ落とし穴があります。動的かつオープンソースのシステムであるという特徴は、初めは開発を容易にしてくれますが、大規模システムの破綻の原因になり得ます。ライブラリが複雑で実行時間が遅く、データの完全性を考慮した設計になっていないので、開発時間の短縮どころか、すぐに時間を使い果たしてしまう可能性があるのです。 この記事ではPythonやビッグデータで作業をする時に、最も時間を無駄にしがちな事柄につ
MySQL には CSV 出力する機能が備わっていることに、初めて気がつきました。 喜び勇んで試してみたものの、Excel ではどうにもうまく読み込めません。特に、セル内で改行があると、次の行という扱いになってしまうのですよね。。。 そこで、何とかしてみたメモを残しておきます。 ポイント 今時なので MySQL は UTF-8 です。Excel で読むために Shift-JIS に変更する必要があります。 セル内での改行は LF、行末の改行は CRLF にする必要があります。 セルを「”」で囲む場合があるため、「”」をエスケープする必要があります。 やってみた まずは CSV 出力する MySQL です。2種類の方法がありますが、今回は SELECT を使う方法です。 mysql> SELECT * FROM wp_posts INTO OUTFILE "/tmp/wp_posts.csv
私が中学生ぐらいの頃、「BOMB!」というアイドル雑誌がありました(今もあるようです)。 某アイドルの水着グラビアにドキドキした清く淡い思い出があります。 という話ではなくて。 先日「サーバ上で作成したCSVファイルをEXCELで開くと文字化けする」という事象がありまして、 もしかしたら「BOM」というものが関係している!?と思い、調べてみました。 『... バイトオーダーマーク (byte order mark) あるいはバイト順マーク(バイトじゅんマーク)は通称BOM(ボム)といわれる、Unicodeの符号か形式で符号化したテキストの先頭につける数バイトのデータのことである。このデータを元にUnicodeで符号化されていることおよび符号化の種類の判別に使用する。 (中略) ... UTF-8は既存のASCIIなどのデータしか読み込みが行えない場合でも正常に扱えるようにするための符号化で
※ 上記はこの記事を書いている2010年10月時点の内容です。 このうち、実際に使おうと試してみたのは「opencsv」と「Super Csv」、「OrangeSignal CSV」の三つ。 他は、情報収集の時点でいまいちピンと来なかったり、環境面で使えなかったりしたので、除外した。 他にもまだまだありそうだが、調べてて名前を見かけるのはこれぐらいかと思われる。 (その他、Commons LangのStringEscapeUtilsにもCSV関係のメソッドがあるが、エスケープ/アンエスケープしか出来ないので問題外。) で、使ってみた感覚としては・・・結論として「Super Csv」が一番使い勝手がよさそうだった。 いろいろと高機能ではあるらしいものの、単純にCSV→Mapのように読み込むだけであれば簡単なコードでさくっと書くことができる。 こういう使い方ができれば、多くの場合目的をカバーで
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く