Windowsのinode的情報BY_HANDLE_FILE_INFORMATIONを取得するPowerShellスクリプト

Windowsでもinode的なところを調べたかったのですが調べてみると、 stackoverflow.com Open both files with CreateFile, call GetFileInformationByHandle for both, and compare dwVolumeSerialNumber, nFileIndexLow, nFileIndexHigh. If all three are e…

EC2のWindows上にpyspark+JupyterでS3上のデータ扱うための開発環境を作る

EC2(Windows)にpyspark構築してS3の情報取得するところまでやる機会があったので情報残しておきます。 環境変数設定 各種ランタイムインストール Javaのインストール Python3.7.2インストール Spark インストール Sparkダウンロード 7zipでgzipを解凍 hadoop…

WindowsにFluentdをインストールしてS3にデータ転送して、管理用の設定も追加

WindowsにFluentdを入れる機会があったのでまとめておきます。 td-agent(Fluentd)インストール td-agentダウンロード td-agentインストール プラグインのインストール ディレクトリ 設定例 設定ファイルの退避 設定ファイル Append用 Update用 Monitor用 AWS…

LambdaのLayer機能活用してpandas,pyarrow,s3fs使ってParquet変換する簡易ETL処理を実装する

小さなファイルのETLにGlueを使うのがもったいなかったので、Pandasやpyarrowで実装しました。 Lambda Layerにpandasとpyarrowを追加 Layerに登録するパッケージを作成 パッケージをアップロード Lambdaのコード 参考 Lambda Layerにpandasとpyarrowを追加 L…

EC2からAthenaへのJDBC接続テストするためのDockerイメージ作った

色々な環境でIAM権限等のテストしている作業の中で、タイトルのイメージ作成したので書いておきます。 パラメータ環境変数 必須環境変数 環境変数名 説明 REGION AWS Region SQL Athenaで実行されるSQL OUTPUT_LOCATION Athenaの実行結果が格納されるS3バケ…

Athenaを使ってS3上のJSONを変換・パーティショニングしてParquet出力してみる

S3上のJSONデータをAthenaを利用してParquetに変換してみます。 使うのはこの話です。 aws.amazon.com テストデータ生成 日付列をパーティションに利用 Parquet+パーティション分割して出力 カタログへパーティション追加 所感 参考URL テストデータ生成 こ…

Windowsで複数のChromeシークレットウィンドウを開き複数の認証情報ブラウザを同時に使う

複数の認証情報で開いたブラウザを並べながらテストをしているときなどは、複数のシークレットウィンドウが欲しくなります。 AWSのクロスアカウントの検証とか。 シークレットモードのウィンドウが使うワークスペースを準備します。シークレットウィンドウ分…

中級者向けSQL入門「達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ」を読みました

この本を読みました。 達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ (CodeZine BOOKS)作者: ミック出版社/メーカー: 翔泳社発売日: 2018/10/11メディア: 単行本(ソフトカバー)この商品を含むブログを見る 目次 1部 魔法のSQL 2部 リレー…

Apache DrillでAWSのDBRレポートCSVファイルをParquet変換して分析してみる

DBR(Detailed Billing Report with Resources and Tags)のCSVを分析しようとググってみたら以下のリポジトリ見つけました。 github.com 中身ざっと読んでみると以下のような感じに見えます。 ローカルにDBRダウンロード DBRのCSVをParquetに変換(Python+Apa…

RedshiftとSpectrumとS3とVPCで組み合わせた場合のネットワーク経路が複雑だったので整理してみた

VPC絡みでRedshiftのネットワークが複雑でハマって整理したので、そのまとめです。 あくまで2019/02/09現在の仕様なので、仕様変わっていることもあると思います。 全体図 2019/02/20追記 Redshift SpectrumからS3への接続はVPC外を通る ParquetのCOPYはJSON…

DockerでApache Drillをサクッと試してみる(S3上のParquetファイル読んでみた)

Apache Drillですが、簡単にインストールして使うことできます。 こちらに書かれているようにダウンロードして解凍するだけです。 Installing Drill on Linux and Mac OS X - Apache Drill ただDocker使える環境あればもっと簡単に試すことできます。 公式コ…

EMR上のApache AtlasにAWS Glueのデータカタログ情報をインポートしてみた

Hiveのメタデータ管理ができるApache Atlasですが、こちらのブログを参考にGlueのカタログ情報もインポートしてみました。 aws.amazon.com EMRのHiveメタストアとしてGlueを使うための設定を準備 EMRクラスタの起動 EMRクラスタへ接続 Glue接続確認 AtlasへH…

AWS Athenaのユーザごとのクエリ実行履歴を分析するためのデータをAWS CLIで収集

Athenaのクエリの実行履歴を、実行ユーザと紐付ける方法です。 CloudTrailからAthenaの実行イベントを取得 こちらのコマンドを利用します。 lookup-events — AWS CLI 1.16.96 Command Reference EventSource=athena.amazonaws.com EventName=StartQueryExecu…

Glueの開発環境をVPC内に閉じるためSageMaker止めてEC2で構築してみた

Glueの開発にSageMaker使っていたのですが、いくつか自分の使い方では問題があったので自分で立ててみたら簡単でした。 SageMakerはネットワークが特徴的 構成 JupyterとSparkMagicインストール ① Anacondaインストール ② (Anaconda Prompt) widgetsnbextens…

電話ボックスみたいなワークスペースのTELECUBE(テレキューブ)利用してみました

テレキューブって知ってますか? こんな感じで電話ボックスみたいなのですが、中には椅子とテーブルがあって集中して仕事ができる空間になっています。 こちらが実証実験中で無料で使えたので入ってきました。 telecube.jp 使い方 使い方に関しては、こちら…

GlueのDynamicFrameでS3へファイル書き出す時はCSVやJSONよりParquetが早い

DynamicFrameを使った開発をしていたら、大した処理していないのに、想像以上に時間がかかるなと思って調べていたら、JSONの書き出しが時間かかっていました。 タイトルの通り、JSONやCSVでのS3出力と比較してParquetでの出力は凄い早いというお話です。処理…

Glueで色々な日付フォーマットの文字列をtimestamp型に変換してみた

掲題の件、JSON等にある日付フォーマットの文字列から、Timestamp形式に変換したかったのですが、どの書式だと変換できるのか良くわかってなかったので、実際に実行してみました。 初期化 日付文字列 Glueでマッピング 結果 UnixTimeの変換 Glue Spark 初期…

AthenaでHIVE_PARTITION_SCHEMA_MISMATCHが発生 GlueカタログのTableとPartitionの間のスキーマに不整合直して解消

掲題のエラーに当たってサポートに対応教えてもらったのでメモ。 事象 原因 パーティションの例 テーブルのスキーマ パーティション毎のスキーマ 対応 参考 事象 CSVをGlueを使ってパーティション分割して、AthenaでプレビューしてみたらHIVE_PARTITION_SCHE…

LEGOとRaspberry Piで会社のイベント展示用のデモ作った話

この動画のデモを作った話です。題名にLEGOと入れましたが、自分はLEGOは触っていなくて、Raspberry Pi専任で作っていたこともあり、少し、技術的なことを中心に書いていこうと思います。 youtu.be www.beex-inc.com 何で作ったのか? どうやって動いている…

Lake Fomationの前身?AWS Data Lake Solutionを触ってみました

先月のre:Invent 2018で発表になったLake Formation。現地で聞いていて即効プレビュー申し込んであるのですが まだ使えていません。 そんな時に一緒に仕事をしている方から、こんなモノがあることを聞きました。 aws.amazon.com こちらから引用したアーキテ…

Livy+SparkmagicでWSL上のSparkをWindows側のJupyter notebookから使う

やりたいこと 利用リポジトリ Apache Livy Sparkmagic WSLでSparkをダウンロード WSLでLivyインストール&ビルド Sparkmagic 他のSparkのバージョン 参考URL やりたいこと Windows上に入れたSparkとJupyter Nootbookで開発していたら、Windowsのディレクトリ…

Alexaに聞いたらDatalakeからKPIを抽出して答えてくれますよというWorkshop受講してきた

re:Invent 2018、今日は私の日程の最終日でした、明日は帰りの飛行機早いので、このブログ書いたら寝ようと思って書いています。 ちょうど今、ChatBotもDatalakeも別々のプロジェクトで手がけてますが、まさかそれが合わさったセッションがあるとは思いませ…

re:InventでHands-On LabsからKeynote見てきました

re:Invent 2018に来ています。 KeynoteがOverflowで入れなかったので、どこかの部屋でモニタで見るくらいならと思いHands-On Labsに行ってきました。 Hands-On Labsでできること Quick Labsというトレーニングサービスがあります。 当然日本でも使えるもので…

re:Invent 2018でのAWS Glue周りの発表を聞いてきた(Python Shell、CloudWatch Event連携、Lake Formation)

AWS re:Invent 2018に参加するためラスベガスに来ています。 昨日はこちらのセッションを聞きました。 AWS re:Invent 2018: Building Serverless Analytics Pipelines with AWS Glue (ANT308) そこで、静かに(?)AWS Glueの新機能の発表がありました。 セ…

AWS GlueでDynamoDBがサポートされたので触ってみた

AWSのre:Invent 2018に参加するためラスベガスに来ています。 題名の通りGlueのCrawlerとETLジョブでDynamoDBがサポートされましたので早速動かしてみます。 セッション 発表されたセッションとスライドはこちらです。他にもあったのですが、今すぐ動くDynam…

LUISが日本語の日付に対応していないので正規表現で引くことにした

LUISで日付認識させようとして、上手く行かないので一旦正規表現で対応したという話です。2018/11/15時点の内容なので、将来的には対応されると信じています。対応状況はこちらを見るとわかると思います。 LUISがDatetimeを認識しない 正規表現で対応するこ…

Application Insightsのログ検索(Log Analytics)でJSONを展開する方法

Application Insightsのログ検索(Log Analytics)はKusto Query Languageという言語のようです。 Application Insightsのログ検索機能ですが、SDK使えば簡単にログ情報を構造化して保存できて、後で検索もしやすいです。使えるようになれば、凄い便利なのに調…

Azure Bot Service で宛先やCC追加などEmailの返信をカスタマイズする

掲題の件、 channelData のプロパティ調整すれば可能です。 つまりはこんな感じです。 enum Importance { High = "high", Normal = "normal", Low = "low", } const sendMail = async (context: TurnContext, toRecipients: string[], ccRecipients: string[…

AWS Glueの仕様でサポートに問い合わせた内容

最近Glueを使っていて、その過程でAWSサポートに問い合わせしたり、仕様を確認した内容をまとめておきます。 Tableのプロパティ(Parameters)の制限 SageMakerでGlueのライブラリ読み込むとエラーが出る S3からS3へのコピーでVPCエンドポイント使いたい 接…

TypescriptからMicrosoft Graph API使ってSharePointやOneDrive上のExcelの情報を読み込む

TypeScriptからSharePointやOneDriveのExcel Onlineの情報を読み込む方法を書きます。 読み込みたいファイル 認証 App Registration Portalへアプリケーション登録 Tokenの取得 TypeScriptからExcelへアクセスしてみる config.json index.ts 実行してみる 参…