Cascalog进程多行json?
Cascalog process multi-line json?
我有一个包含 Json 个文件的目录,我想使用 cascalog 处理这些文件。我现在拥有的解决方案要求我使用 bash 脚本从我的 json 文件中删除所有换行符。我正在寻找更好的解决方案,因为我使用 rsync 同步这些文件。
我的问题是我可以读取 Cascalog 中的文件内容和 return 文件内容作为一个元组。目前函数 'lfs-textline' returns 是文件中每一行的元组序列,因此我必须删除换行符。最好我想 return 每个文件的元组序列。
(defn textline-parsed [dir]
(let [source (lfs-textline dir)]
(<- [?line]
(source ?line))))
使用 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)
我有一个包含 Json 个文件的目录,我想使用 cascalog 处理这些文件。我现在拥有的解决方案要求我使用 bash 脚本从我的 json 文件中删除所有换行符。我正在寻找更好的解决方案,因为我使用 rsync 同步这些文件。
我的问题是我可以读取 Cascalog 中的文件内容和 return 文件内容作为一个元组。目前函数 'lfs-textline' returns 是文件中每一行的元组序列,因此我必须删除换行符。最好我想 return 每个文件的元组序列。
(defn textline-parsed [dir]
(let [source (lfs-textline dir)]
(<- [?line]
(source ?line))))
使用 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)