Cascalog过程多线json?

时间:2015-06-27 10:32:04

标签: hadoop clojure cascalog

我有一个我想用cascalog处理的Json文件目录。我现在的解决方案要求我使用bash脚本从我的json文件中删除所有换行符。我正在寻找一个更好的解决方案,因为我使用rsync同步这些文件。

我的问题是我可以在Cascalog中读取文件的内容并将文件的内容作为一个元组返回。目前功能< lfs-textline'为文件中的每一行返回一系列元组,因此我必须删除换行符。最好我想为每个文件返回一系列元组。

(defn textline-parsed [dir]
    (let [source (lfs-textline dir)]
        (<- [?line]
            (source ?line))))

1 个答案:

答案 0 :(得分:1)

使用cascalog.more-taps中的hfs-wholefile来执行此操作。

(:require [cascalog.more-taps :as taps])

(defn- byte-writable-to-str [bw]
  "convert byte writable to stirng"
  [(apply str (map char (. bw (getBytes))))])

然后,使用

(??<- [?str] 
    ((taps/hfs-wholefile path) ?filename ?file-content) 
    (byte-writable-to-str ?file-content :> ?str)