Skip to content

Instantly share code, notes, and snippets.

@repeatedly
repeatedly / inside_impala_coordinator.md
Created November 26, 2012 10:13
Inside Impala Coordinator
@qtamaki
qtamaki / exprgen.hs
Created November 26, 2012 07:03
Random Expression Generator
import System.Random
------------------------------------------------------------------------------
-- RANDOM Stream
------------------------------------------------------------------------------
randomX x = randomR (0,x -1)
type RandomF = StdGen -> (Int, StdGen)
ranStImpl :: StdGen -> RandomF -> [Int]
{-# LANGUAGE RankNTypes #-}
module Main where
import Control.Monad
import Control.Monad.Identity
import Data.Functor.Compose
natComp :: (Functor m1, Functor m2, Functor m3, Functor m4) =>
(forall a.m1 a -> m2 a) -> (forall a.m3 a -> m4 a)
-> (forall a.m3 (m1 a) -> m4 (m2 a))
s `natComp` t = (fmap s) . t
@kazu-yamamoto
kazu-yamamoto / gist:4064634
Created November 13, 2012 08:20
Testing Free Monad with QuickCheck
module Main where
import Control.Monad
import Control.Monad.Free
import Prelude hiding (putChar, getChar)
import qualified System.IO as IO
import Test.QuickCheck
----------------------------------------------------------------
-- Our DSL
@oza
oza / impala_be_node.md
Created October 28, 2012 23:36
Impala BE Note

Impala BE メモ

本文章は,Impala のメモ の TODO のうち,BackEnd の特にクエリの実行部を読み,文章化したものである.

概要

BackEnd(BE) は単体のデーモンとして動作し,FE 側でパースした結果(Job ID/Plan)に基づいて処理を実行する.FE と BE のやりとりには Thrift が用いられている.

|FE| - パース結果(Job ID/実行Planなど) thrift -> |BE|

なんかClouderaが出したらしい.Hiveと違ってMapReduceをやらず,独自のクエリエンジンを使っている.場合によっては10x以上速くなるらしい.GoogleのDremelに触発されて2年かけて作ってたらしい.

構成

Frontend / Backendのサーバが2種類.FrontendがBeeswax経由でWebから叩けたりする.BackendはHDFSとかのデータノード上でクエリとかを実行するやつだと思われる(2.の実行エンジン辺り?).

ソース

主要なディレクトリはcommon, be(backend), fe(fronend)の3つ.

import Control.Lens
import Control.Monad
import Control.Monad.State
import Data.List
import qualified Data.Map as M
paint :: M.Map (Int, Int) Char -> (Int, Int) -> Int
paint mm pos = evalState (go pos) mm where
go (i, j) = do
b <- use $ at (i, j)
@konn
konn / tex2a5.hs
Created October 14, 2012 07:20
自動的にトリミングしてA5に纏めなおすバッチ(要・shelly)
{-# LANGUAGE ExtendedDefaultRules, OverloadedStrings #-}
{-# OPTIONS_GHC -fno-warn-type-defaults #-}
module Main where
import Control.Monad
import qualified Data.List as List
import Data.Monoid
import qualified Data.Text.Lazy as LT
import Filesystem.Path.CurrentOS hiding (fromText, (<.>))
import Shelly
import System.Environment
@konn
konn / TuringMachine.hs
Created October 11, 2012 13:35
A simple turing machine simulator.
{-# OPTIONS_GHC -fwarn-incomplete-patterns #-}
module TuringMachine where
import Control.Applicative
import Control.Arrow hiding (left, right)
import Control.Lens hiding (Tape, Zipper, left, right)
import Data.List.Lens
import qualified Data.Map as M
import Data.Maybe
data Instruction s = GoLeft